WikiDer > Хеш-функция PJW - Википедия
Хеш-функция PJW не криптографический хэш-функция сделано Питер Дж. Вайнбергер компании AT&T Bell Labs.
Другие версии
Вариант хэша PJW использовался для создания хэша ElfHash или Elf64, который используется в объектных файлах Unix с ELF формат.
Аллен Голуб создал портативную версию хеш-алгоритма PJW, в которой была ошибка и которая попала в несколько учебников, как позже признался автор одного из этих учебников.[1]
Алгоритм
Алгоритм хеширования PJW включает сдвиг предыдущего хеша и добавление текущего байта с последующим перемещением старших битов:[2]
алгоритм PJW_hash (s) является uint h: = 0 бит: = размер uint в битах за i: = от 1 до | S | делать h: = h << бит / 8 + s [i] high: = получить старшие биты / 8 бит h слева если высокий ≠ 0 тогда h: = h xor (старшие >> биты * 3/4) h: = h & ~ high возвращаться час
Выполнение
Ниже представлена реализация алгоритма, используемого в формате UNIX ELF:[3]
беззнаковый длинный ElfHash(const беззнаковый char *s){ беззнаковый длинный час = 0, высоко; пока (*s) { час = (час << 4) + *s++; если (высоко = час & 0xF0000000) час ^= высоко >> 24; час &= ~высоко; } возвращаться час;}
Смотрите также
Некриптографические хеш-функции
Рекомендации
- ^ Бинсток, Эндрю (1996). "Хеширование повторно хешировано". Доктора Добба.
- ^ «Хеш-функции». www.cs.hmc.edu. Получено 2015-06-10.
- ^ КОРПОРАТИВНАЯ UNIX Press. Бинарный интерфейс приложения System V. ISBN 0-13-100439-5.