Сейчас на форуме: cppasm, asfa (+6 невидимых)

 eXeL@B —› Вопросы новичков —› Снова CRC32
Посл.ответ Сообщение

Ранг: 2.0 (гость)
Активность: 0.010
Статус: Участник

Создано: 07 июля 2016 16:31
· Личное сообщение · #1

Здравствуйте есть задача, создать строку для определенного CRC32 кода, но мне надо решение в котором я мог задать первый байт и с учетом его рассчитывать слудующие 3 байт.

Нашел ряд решение но оно не подходит:
Code:
  1. #include<stdio.h>
  2. unsigned long c,c2,p2,pol=0xEDB88320;
  3. long n,k;
  4. main()
  5. {
  6. printf("CRC32 Adjuster (c) 2001 by RElf @ HHT/2\n");
  7. printf("Length of data: "); scanf("%ld",&n);
  8. printf("Offset to patch: "); scanf("%ld",&k);
  9. = (n-k)<<3;
  10. printf("Current CRC32: 0x"); scanf("%x",&c);
  11. printf("Desired CRC32: 0x"); scanf("%x",&c2);
  12. c ^= c2;
  13. p2 = (pol << 1) | 1;
  14. while(n--) if(c&0x80000000) c = (c<<1)^p2; else c<<=1;
  15. printf("XOR masks:%02X%02X%02X%02X\n",c&0xff,(c>>8)&0xff,(c>>16)&0xff, c>>24);
  16. }


Буду благодарен за любую помощь.




Ранг: 150.3 (ветеран), 175thx
Активность: 0.160.07
Статус: Участник

Создано: 07 июля 2016 17:41
· Личное сообщение · #2

tonystark пишет:
задать первый байт и с учетом его рассчитывать слудующие 3 байт

так не выйдет, для подгонки CRC32 нужно вычислять все 4 байта

| Сообщение посчитали полезным: tonystark

Ранг: 2.0 (гость)
Активность: 0.010
Статус: Участник

Создано: 07 июля 2016 17:54
· Личное сообщение · #3

-=AkaBOSS=- пишет:
так не выйдет, для подгонки CRC32 нужно вычислять все 4 байта


хм, а нет альтернатив? например менять местами байты? или еще как то "мудрить"?
Я уже все что возможно перебрал, может есть какие то вариации?
Очень надо решение



Ранг: 431.7 (мудрец), 390thx
Активность: 0.730.32
Статус: Участник

Создано: 07 июля 2016 18:33
· Личное сообщение · #4

То есть речь идёт о некоем самодельном алгоритме подсчёта 32-битной контрольной суммы?




Ранг: 150.3 (ветеран), 175thx
Активность: 0.160.07
Статус: Участник

Создано: 07 июля 2016 18:58 · Поправил: -=AkaBOSS=-
· Личное сообщение · #5

tonystark
для 24 бит данных - без вариантов
на 2^32 вариантов будет столько же уникальных хешей, только потом уже возможны коллизии

если же сократить количество комбинаций до 2^24, то мы в результате имеем всего (2^24)/(2^32)*100 = 0.390625% шанс получить желаемое значение



Ранг: 2.0 (гость)
Активность: 0.010
Статус: Участник

Создано: 07 июля 2016 21:22
· Личное сообщение · #6

dosprog пишет:
То есть речь идёт о некоем самодельном алгоритме подсчёта 32-битной контрольной суммы?

на самом деле я ищу такой подход.

Попросили придумать систему для казино, а именно надо иметь возможность хратить результат игры + предыдущий хеш. Я надеялся что можно CRC32 сюда прикрутить, но видимо бредовая мысль.

Смысл в том что надо иметь один хеш в котором хранится прошлый хеш и результат игры и так циклично выбирать. Идея в том что бы доказать пользователю что нет под тасовок.



Ранг: 369.8 (мудрец), 400thx
Активность: 0.390
Статус: Участник

Создано: 07 июля 2016 21:40
· Личное сообщение · #7

Сложно доказать что нет подтасовок, но сделать так чтобы они были...

-----
PGP key <0x1B6A24550F33E44A>




Ранг: 431.7 (мудрец), 390thx
Активность: 0.730.32
Статус: Участник

Создано: 08 июля 2016 02:07 · Поправил: dosprog
· Личное сообщение · #8

Доказывать вообще всегда сложно.
Иногда даже невозможно, если всё на уровне веры.
Кто не верит аферистам с иговыми автоматами, тем доказывай/не доказывай - всё едино
И наоборот.

Вообще, CRC это способ контроля целостности данных, а не их уникальности





Ранг: 488.1 (мудрец), 272thx
Активность: 0.350
Статус: Участник

Создано: 08 июля 2016 07:35
· Личное сообщение · #9

tonystark пишет:
Попросили придумать систему для казино, а именно надо иметь возможность хратить результат игры + предыдущий хеш. Я надеялся что можно CRC32 сюда прикрутить, но видимо бредовая мысль.

именно.. бредовая. для казино все намного сложнее. мало того, что надо формировать псеводо случайные числа (выпадение шариков/фишек и т.д) еще надо механизм управления процентажем выигрыша. Для казино есть специальные математические аппараты, и это секреты фирм, которые занимаются разработкой софта

-----
Наша работа во тьме, Мы делаем, что умеем. Мы отдаем, что имеем, Наша работа во тьме....





Ранг: 110.8 (ветеран), 104thx
Активность: 0.090.01
Статус: Участник

Создано: 08 июля 2016 09:04 · Поправил: Rainbow
· Личное сообщение · #10

Думаю --> этот материал <-- Все прояснит



Ранг: 2.0 (гость)
Активность: 0.010
Статус: Участник

Создано: 08 июля 2016 09:41
· Личное сообщение · #11

VodoleY пишет:
Для казино есть специальные математические аппараты, и это секреты фирм, которые занимаются разработкой софта

конечно есть но у них другий принцип. Мне надо: на ресурсе jsfiddler иметь HTML где пользователю вбивает свой последний хеш и получает все результаты своих игр при этом все это высчитывается из хеша.
Я думал делать так: брать результат + прошлый хеш и CRC находить источник и так по кругу. Но видимо надо писать что то свое, самопальное.




Ранг: 150.3 (ветеран), 175thx
Активность: 0.160.07
Статус: Участник

Создано: 08 июля 2016 10:00 · Поправил: -=AkaBOSS=-
· Личное сообщение · #12

tonystark пишет:
получает все результаты своих игр при этом все это высчитывается из хеша

мне кажется, вы путаете хеширование информации с её сжатием)

tonystark пишет:
брать результат + прошлый хеш и CRC находить источник и так по кругу

всё равно больше 32 бит не уместится, или игроку придётся по кругу вводить все свои предыдущие хэши
в результате - всего лишь ненужное усложнение, и количество хранимой информации весьма ограничено.

если нужно отдавать сохранки игроку - данные в json, сверху зашифровать, шифрованное перегнать в бейс64 - и вывести в текстовое поле. так, например, в некоторых флэш-играх переносимые сохранки сделаны.

Rainbow, даже с этим материалом на 24 битах CRC-32 заутомляешься подбирать.



Ранг: 2.0 (гость)
Активность: 0.010
Статус: Участник

Создано: 08 июля 2016 10:08
· Личное сообщение · #13

-=AkaBOSS=- пишет:
мне кажется, вы путаете хеширование информации с её сжатием)


Rainbow, даже с этим материалом на 24 битах CRC-32 заутомляешься подбирать.


я вчера уже попробовал - банальный брут около 2х часов подбирал одну пару. Короч лучше написать что то свое на основе системы уравнений.

Добавлено спустя 7 минут
всем спасибо за участие.
Выводы сделал.


 eXeL@B —› Вопросы новичков —› Снова CRC32
:: Ваш ответ
Жирный  Курсив  Подчеркнутый  Перечеркнутый  {mpf5}  Код  Вставить ссылку 
:s1: :s2: :s3: :s4: :s5: :s6: :s7: :s8: :s9: :s10: :s11: :s12: :s13: :s14: :s15: :s16:


Максимальный размер аттача: 500KB.
Ваш логин: german1505 » Выход » ЛС
   Для печати Для печати