Сейчас на форуме: Kybyx (+3 невидимых)

 eXeL@B —› Оффтоп —› Какой CRC-16 наиболее устойчивый для 13 символов от 0 до 9?
Посл.ответ Сообщение


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

Создано: 08 февраля 2014 20:20
· Личное сообщение · #1

Возникла потребность сгенерировать устойчивый к изменениям 18-ти символьный код состоящий только из цифр от 0 до 9, где первые 13 символов полезная информация и 5 в конце - 16 битный CRC преобразованный в int.
Пример: 012345678912330374
Далее в этом коде 6 раз меняю число в рандомной позиции на рандомный символ от 0 до 9 и поверяю соответствие CRC и первой части. Таким образом код (включая CRC) меняется не более чем на треть.
Я пробовал несколько реализаций CRC-16 алгоритмов найденных в инете и один самописный на основе чётности и нечётности.
Количество ложных срабатываний на 6 миллионов проверок отличается в разы, а лучший результат это примерно 70-90.
Вопрос в том, возможно ли значительно уменьшить это количество и какой 16-битный алгоритм подсчёта контрольной суммы может подойти лучше для этого случая?




Ранг: 2014.5 (!!!!), 1278thx
Активность: 1.340.25
Статус: Модератор
retired

Создано: 08 февраля 2014 21:02
· Личное сообщение · #2

Как вариант-можешь попробовать взять относительно стойкий хеш, типа МД5 и поксорить ворды друг с другом-и будет тебе 16-битный.
Другой вопрос, что это отображение множества 10^13 -> 10^5, что даёт 10^8 одинаковых прообразов хешей. Так что я бы не ждал вероятность под 99%. Если получил 90-это уже неплохо. Надо точно больше-расширяй хеш.



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

Создано: 10 февраля 2014 20:57
· Личное сообщение · #3

Коллизии на аски последовательностях во входных данных это довольно редкая вещь для более-менее серьезных хешей, так что я бы особо не запаривался.

-----
Shalom ebanats!





Ранг: 218.9 (наставник), 42thx
Активность: 0.160
Статус: Участник
dotnet

Создано: 11 февраля 2014 18:04
· Личное сообщение · #4

Лучше взять просто SHA256 и не париться

-----
have a nice day





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

Создано: 11 февраля 2014 22:08
· Личное сообщение · #5

Archer пишет:
Надо точно больше-расширяй хеш.


Да, пожалуй единственный вариант.
16 бит от МД5 даёт такие же результаты как и просто CRC-16. В принципе это ожидаемо, каждый последующий уникальный код после 65535 будет иметь CRC которое уже встречалось ранее...


 eXeL@B —› Оффтоп —› Какой CRC-16 наиболее устойчивый для 13 символов от 0 до 9?

У вас должно быть 20 пунктов ранга, чтобы оставлять сообщения в этом подфоруме, но у вас только 0

   Для печати Для печати