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

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

2 ответа

Решение

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

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

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

Другие вопросы по тегам