Если вы используете CRC-64 более 8 байтов или меньше, тогда нет смысла использовать CRC-64: просто используйте 8 байтов «как есть».CRC не имеет никакого дополнительного значения, если вход не длиннее предполагаемого выхода.
Как правило, если ваша хеш-функция имеет выход n битов, тогда начинают появляться коллизиикак только вы накопили около 2 n / 2 строк.Короче говоря, если вы используете 64 бита, то очень маловероятно, что вы столкнетесь с коллизией в первых 2 миллиардах строк.Если вы получите 160-битный или более вывод, тогда коллизии практически невозможны (коллизий будет гораздо меньше, чем сбоев оборудования, таких как загорание процессора).Это предполагает, что хеш-функция является «идеальной».Если ваша хеш-функция начинается с выбора нескольких байтов данных, то обязательно, чтобы выбранные вами байты , а не не могли повлиять на вывод хеша, поэтому вам лучше использовать «хорошие» байты -- который полностью зависит от типа строк, которые вы хэшируете.Здесь нет общего правила.
Мой совет - сначала попытаться использовать универсальную хеш-функцию для всей строки;Я обычно рекомендую MD4 .MD4 - криптографическая хеш-функция, которая была полностью нарушена, но для проблемы без обеспечения безопасности она все еще очень хороша при смешивании элементов данных (криптографически говоря, CRC намного более сломан, чем MD4).Сообщалось, что MD4 на некоторых платформах на самом деле быстрее CRC-32, так что вы можете попробовать его.На базовом ПК (мой 2,4 ГГц Core2) реализация MD4 работает со скоростью около 700 МБ / с, поэтому мы говорим о 35000 хэшированных строках по 2 КБ в секунду, что неплохо.