Интернет магазин китайских планшетных компьютеров



Компьютеры - PJW-32 - Алгоритм hashpjw

30 июня 2011


Оглавление:
1. PJW-32
2. Алгоритм hashpjw
3. Использование



В изначальном варианте, алгоритм был адаптирован на работу с хеш-таблицами, то есть на начальной стадии имелось сообщение s произвольной длины L, от которого требовалось найти хеш значение h. Перед вычислением значение h устанавливается в 0. Сообщение считывается посимвольно. Число m — предполагаемый размер таблицы.

Шаг 1

Каждый считанный символ с сообщения s переводится в число, а затем рассматривается его битовое значение. Преобразование отдельного символа в целое число обычно поддерживается языками программирования. Например, Pascal предоставляет для этого функцию ord, а С автоматически преобразовывает символ в целое число при выполнении арифметических операций.
Для полученного значения с производится сдвиг h на 4 позиции влево и суммирование с с.

Шаг 2

Производится проверка: если любой из 4 старших битов h равен 1 то сдвигаем их вправо на 24 позиции. Затем выполняем операцию исключающего или со значением h и сбрасываем значения 4 старших битов в 0.

Шаг 3

После проведения шагов 1-2 со всеми символами сообщения s, производится деление h по модулю m. Полученное число — это номер списка в таблице, к которому следует присоединить данную строку.

Исходный текст

unsigned int PJWHash 
{
        unsigned int hash = 0;
        unsigned int test = 0;
        unsigned int i = 0;
 
        for  {
                hash =  + ;
 
                if  != 0) {
                        hash = ) & );
                }
        }
        return hash;
}


Просмотров: 2302


<<< N-Hash