Перейти к содержанию
    

Ищу 24-32 bit hash

Подскажите pls hash-функцию, которая занимала бы мало места и была бы достаточно быстрой.

 

Задача выглядит следующим образом: есть пакеты данных, которые идентифицируются короткими (4-32 символа длиной) строками ascii. Всего строк может быть несколько тысяч. Хочется сделать такую схему:

строка -> hash покороче -> CAM-память -> ...

Хэш нужен покороче, чтобы не увеличивать САМ-память, 24 бита было бы хорошо.

Первое, что пришло в голову, это сделать хэш вида {5-бит длина строки, 16-бит CRC} или просто вычислять CRC от строки с добавленным в конце байтом длины.

Но у меня есть подозрение, что у разных строк CRC будет иногда совпадать, не для хэша он заточен.

Может ли уважаемый all порекомендовать что-либо?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Подскажите pls hash-функцию, которая занимала бы мало места и была бы достаточно быстрой.

 

Задача выглядит следующим образом: есть пакеты данных, которые идентифицируются короткими (4-32 символа длиной) строками ascii. Всего строк может быть несколько тысяч. Хочется сделать такую схему:

строка -> hash покороче -> CAM-память -> ...

Хэш нужен покороче, чтобы не увеличивать САМ-память, 24 бита было бы хорошо.

Первое, что пришло в голову, это сделать хэш вида {5-бит длина строки, 16-бит CRC} или просто вычислять CRC от строки с добавленным в конце байтом длины.

Но у меня есть подозрение, что у разных строк CRC будет иногда совпадать, не для хэша он заточен.

Может ли уважаемый all порекомендовать что-либо?

В общем случае если разрядность входного сообщения > разрядности хэша - то "CRC будет иногда совпадать" полюбому.

Вот "алгоритм архиватора" однозначно "отображается", но длина "хэша" зависит от входного сообщения.

Как то вот так...

PS: Сорри если что...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

нужен алгоритм, который из регулярных данных генерит шум - так ведь? тогда хэш будет равномерно заполнять свое пространство с минимумом совпадений

проверенные алгоритмы такого типа - это криптование, тот же DES или кусок от него. ну и классические хэш функции - от биткоинов, например, тоже

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

тот же DES или кусок от него. ну и классические хэш функции - от биткоинов, например, тоже

Не подходит - велик в реализации, большая разрядность результата. У биткойна, насколько я помню, используется sha256(sha256(data)).

Чего-нибудь бы попроще...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Делайте CRC с полиномом нужной Вам длины...

правило выбора полинома (эвристические) можно найти на просторах интернета...

 

Совпадать для разных строк может и хеш. Причем, если символы в строках появляются с равномерным законом распределения, то не важно как вычисляется хеш...

 

При вычислении CRC, кстати вполне неплохая перемешиваемость получается.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...