Хеш 17-символьный ключ в значение 4 байта - PullRequest
1 голос
/ 14 мая 2011

У меня есть коллега, который борется с проблемой хеширования.

Имеется 17-буквенно-цифровой ключ (код VIN), который необходимо преобразовать в 4-байтовое значение (также может быть буквенно-цифровым).Зная, что эти 4 байта ограничат количество ключей, какой алгоритм идеального хэша вы бы увидели для этой проблемы?

Ответы [ 2 ]

1 голос
/ 14 мая 2011

Вы говорите о хэш-функции, поэтому нормально иметь f (x0) == f (x1) с x0! = X1.

Хорошая хеш-функция должна иметь хэшированные значения, равномерно распределенные,Вы можете добавить группы из 4 байтов, которые составляют 17-значное значение, и оставить только 4 байта с наименьшим весом, например.

1 голос
/ 14 мая 2011

После быстрого просмотра Википедии , я думаю, что вы могли бы сначала «сжать» ключ, или, другими словами, вы делаете хэш в 2 этапа.

Этап 1: разбитьключ к отдельным частям в соответствии со стандартом, и делать индивидуально настроенный хэш.

Этап 2: собрать хеш-коды и создать обычный хэш.

Наивный пример:

Если ваши данные ограничены Соединенными Штатами, существует только 27 первых 2 байтов, поэтому первые 2 байта могут быть хэшированы до 0 - 26. (Предположим, мы получаем a здесь.)

Тогда предположим, что другие байты имеют N возможностей и могут быть хэшированы до 0 - N-1.(Предположим, мы получаем b здесь.)

Комбинационный результат может быть a * N + b.Затем создайте обычный хэш (если 26 * N>, что могут выражать 4 байта).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...