Есть ли классическая 3-байтовая функция отпечатка пальца? - PullRequest
2 голосов
/ 30 ноября 2011

Мне нужна функция контрольной суммы / отпечатка для коротких строк (скажем, от 16 до 256 байтов), которая помещается в 24-битное словоЕсть какой-нибудь известный алгоритм для этого?

Ответы [ 2 ]

2 голосов
/ 10 июля 2012

Я предлагаю использовать 24-битный CRC как простое решение. CRC доступны во всех длинах и всегда просты для вычисления. В Википедии есть соответствующая запись. Качество намного лучше, чем сумма по модулю. Следующим шагом (если существует реальная угроза иметь неправильную строку с такой же контрольной суммой) будет криптографический MAC, такой как CMAC. Хотя это слишком длинная книга, ее можно уменьшить, взяв первые 24 бита.

0 голосов
/ 30 ноября 2011

Самое простое, что нужно сделать - это базовая контрольная сумма - сложить байты в строку, mod (2 ^ 24).

При преобразовании в байты необходимо следить за проблемами с набором символов, поэтому все согласны с одинаковой кодировкой символов в байтах.

...