Хеш-функция Дженкинса
Криптографическая</br>хеш-функция | |
Название |
Хеш-функции Дженкинса |
---|---|
Впервые опубликован | |
Тип |
Хеш-функции Дженкинса представляют собой семейство хеш-функций общего назначения для ключей переменной длины разработанных Бобом Дженкинсом. Функции также могут использоваться в качестве контрольной суммы для обнаружения случайного повреждения данных или обнаружения идентичных записей в базе данных. Впервые описание функции было опубликовано в 1997 году.
Содержание
Хеш-функции
one-at-a-time
Приведенный текст функции взят с веб-страницы Боба Дженкинса и является расширенной версией, опубликованной автором в журнале доктора Доббса.
uint32_t jenkins_one_at_a_time_hash(char *key, size_t len)
{
uint32_t hash, i;
for(hash = i = 0; i < len; ++i)
{
hash += key[i];
hash += (hash << 10);
hash ^= (hash >> 6);
}
hash += (hash << 3);
hash ^= (hash >> 11);
hash += (hash << 15);
return hash;
}
На рисунке справа показан лавинный эффект функции.
Каждая из 24 строк соответствует одному биту в 3-байтовом ключе на входе и каждый из 32 столбцов соответствует биту в выходном хеше. Цвета показывают, насколько хорошо входной бит влияет на данный бит на выходе: зеленый квадрат указывает хорошее перемешивание, желтый квадрат — слабое перемешивание, и красный обозначал бы, что перемешивания не происходит. Как видно из рисунка, только несколько битов в последнем байте входного ключа слабо перемешаны с несколькими битами результата.
lookup2
Функция lookup2 была промежуточным вариантом функции one-at-a-time.
lookup3
Функция lookup3 разбивает вход на блоки по 12 байт в каждом (96 бит).[1] Такое поведение может быть более целесообразным, когда скорость важнее, чем простота. Имейте в виду, что увеличение скорости работы при использовании этого варианта хеша вероятно только для больших ключей, и что повышенная сложность реализации, наоборот, может вызвать замедление работы. Например, вследствие того, что компилятор может оказаться не в состоянии подставить функцию инлайн.
Напишите отзыв о статье "Хеш-функция Дженкинса"
Ссылки
- ↑ Боб Дженкинс, [www.burtleburtle.net/bob/c/lookup3.c lookup3.c исходный код]. На 16 апреля 2009 года.
|
Отрывок, характеризующий Хеш-функция Дженкинса
Пьер взял в руки связку бумаг. Князь Андрей, как будто вспоминая, не нужно ли ему сказать еще что нибудь или ожидая, не скажет ли чего нибудь Пьер, остановившимся взглядом смотрел на него.– Послушайте, помните вы наш спор в Петербурге, – сказал Пьер, помните о…
– Помню, – поспешно отвечал князь Андрей, – я говорил, что падшую женщину надо простить, но я не говорил, что я могу простить. Я не могу.
– Разве можно это сравнивать?… – сказал Пьер. Князь Андрей перебил его. Он резко закричал:
– Да, опять просить ее руки, быть великодушным, и тому подобное?… Да, это очень благородно, но я не способен итти sur les brisees de monsieur [итти по стопам этого господина]. – Ежели ты хочешь быть моим другом, не говори со мною никогда про эту… про всё это. Ну, прощай. Так ты передашь…
Пьер вышел и пошел к старому князю и княжне Марье.
Старик казался оживленнее обыкновенного. Княжна Марья была такая же, как и всегда, но из за сочувствия к брату, Пьер видел в ней радость к тому, что свадьба ее брата расстроилась. Глядя на них, Пьер понял, какое презрение и злобу они имели все против Ростовых, понял, что нельзя было при них даже и упоминать имя той, которая могла на кого бы то ни было променять князя Андрея.
За обедом речь зашла о войне, приближение которой уже становилось очевидно. Князь Андрей не умолкая говорил и спорил то с отцом, то с Десалем, швейцарцем воспитателем, и казался оживленнее обыкновенного, тем оживлением, которого нравственную причину так хорошо знал Пьер.
В этот же вечер, Пьер поехал к Ростовым, чтобы исполнить свое поручение. Наташа была в постели, граф был в клубе, и Пьер, передав письма Соне, пошел к Марье Дмитриевне, интересовавшейся узнать о том, как князь Андрей принял известие. Через десять минут Соня вошла к Марье Дмитриевне.
– Наташа непременно хочет видеть графа Петра Кирилловича, – сказала она.
– Да как же, к ней что ль его свести? Там у вас не прибрано, – сказала Марья Дмитриевна.
– Нет, она оделась и вышла в гостиную, – сказала Соня.
Марья Дмитриевна только пожала плечами.
– Когда это графиня приедет, измучила меня совсем. Ты смотри ж, не говори ей всего, – обратилась она к Пьеру. – И бранить то ее духу не хватает, так жалка, так жалка!