Есть ли какая -либо классическая функция отпечатков пальцев на 3 байта?
-
25-10-2019 - |
Вопрос
Мне нужна функция контрольной суммы/отпечатка пальца для коротких строк (скажем, от 16 до 256 байтов), которая подходит в слово 24 бита. Есть ли хорошо известный алгоритм для этого?
Решение
Я предлагаю использовать 24-битный CRC в качестве простого решения. CRC доступны по всей длине и всегда просты для вычисления. Википедия имеет соответствующую запись. Качество намного лучше, чем сумма, вызванная модулем. Следующим шагом (если это реальная угроза иметь неправильную строку с той же контрольной суммой) был бы криптографический Mac, такой как CMAC. Хотя это слишком долго из книги, его можно уменьшить, принимая первые 24 бита.
Другие советы
Самое простое, что нужно сделать, это базовая контрольная сумма - сложите байты в строке, мод (2^24).
Вы должны следить за проблемами набора персонажей при преобразовании в байты, поэтому все согласны с тем же кодированием персонажей на байтах.