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