Jump to content

Хэш-функция PJW

Хэш-функция PJW — это некриптографическая хэш-функция, созданная Питером Дж. Вайнбергером из AT&T Bell Labs.

Другие версии

[ редактировать ]

Вариант хеша PJW использовался для создания хеша ElfHash или Elf64, который используется в объектных файлах Unix в формате ELF .

Аллен Голуб создал портативную версию хэш-алгоритма PJW, которая содержала ошибку и попала в несколько учебников, как позже признался автор одного из этих учебников. [1]

Алгоритм

[ редактировать ]

Алгоритм хеширования PJW включает в себя сдвиг предыдущего хеша и добавление текущего байта с последующим перемещением старших битов: [2]

algorithm PJW_hash(s) is
    uint h := 0
    bits := uint size in bits
    for i := 1 to |S| do
        h := h << bits/8 + s[i]
        high := get top bits/8 bits of h from left
        if high ≠ 0 then
            h := h xor (high >> bits * 3/4)
            h := h & ~high
    return h

Выполнение

[ редактировать ]

Ниже приведена реализация алгоритма, используемая в формате Unix ELF: [3]

unsigned long ElfHash(const unsigned char *s)
{
    unsigned long   h = 0, high;
    while (*s)
    {
        h = (h << 4) + *s++;
        if (high = h & 0xF0000000)
            h ^= high >> 24;
        h &= ~high;
    }
    return h;
}

Этот код C ошибочно предполагает, что long это 32-битный тип данных. Когда long шире 32 бит, как и во многих 64-битных системах, код содержит ошибку. [4]

См. также

[ редактировать ]

Некриптографические хэш-функции

  1. ^ Бинсток, Эндрю (1996). «Перефразирование хэширования» . Доктор Добб .
  2. ^ «Хеш-функции» . www.cs.hmc.edu . Проверено 10 июня 2015 г.
  3. ^ КОРПОРАТИВНАЯ UNIX Press (1993). Двоичный интерфейс приложения System V. ISBN  0-13-100439-5 .
  4. ^ «Хеш-функция ELF может переполниться» . Проверено 14 апреля 2023 г.
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: 58bc08aff7f391c7ccfb1052ffd4426f__1694083980
URL1:https://arc.ask3.ru/arc/aa/58/6f/58bc08aff7f391c7ccfb1052ffd4426f.html
Заголовок, (Title) документа по адресу, URL1:
PJW hash function - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)