Приложение 3: FNV хэш-функции
Статьи по теме
- библиотека компонентов для работы с файлами TS3 – Вспомогательные типы данных и функции, на русском языке
- языковые параметры (локализации) – Sims3: FNV, на английском языке;
- википедия – FNV, на русском языке;
- википедия – Хеширование, на русском языке;
Краткий обзор
FNV (англ. Fowler–Noll–Vo) – семейство простых некриптографических хэш-функций общего применения, в The Sims 3 FNV-функции используются в различных ресурсах игры в виде 32-разрядной или 64-разрядной форм для генерации идентификаторов свойств, экземпляров записей, костей и т.п. Изредка используется 24-разрядый хэш, который вычисляется как 32-разрядый хэш, а затем старший байт отбрасывается, а младший складывается по "исключающему или" (xor) со старшим.
Описание алгоритма
Реализация функции хэширования проста, ее реализация – берется некое начальное число, а затем последовательно для каждого байта данных умножается на простое число и складывается (xor-ится) с ними по модулю 2.
Когда хэшируются строки, их символы вначале конвертируются в нижний регистр (в прописные), в связи с этим связана невозможность использования кириллицы в них.
Примеры реализации алгоритмов FNV хэширования для строк и массивов байт: