русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

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


Дата добавления: 2015-08-31; просмотров: 1217; Нарушение авторских прав


Функция MD5 (Message Digest 5) является последней модификацией целого семейства алгоритмов MD (MD2, MD4) и описана в RFC 1321.

Она получает на вход данные произвольной, в том числе и нулевой длины, а на выход выдает значение длиной 16 байт. Применительно к предыдущим обозначениям имеем, что L = 16 байт, а B = 64 байта.

Последовательность работы функции следующая.

1. Сообщение разбивается на блоки по 512 бит (64 байта). Длина последнего блока должна составлять 448 бит. Для этого неполный блок дополняется последовательностью, состоящей из одного единичного бита, за которым следуют нулевые биты. Дополнение также происходит и в случае, если последний блок имеет длину строго 448 байт (в этом случае добавляется одна 1 и 511 нулей).

2. Полученный последний блок из 448 бит дополняется еще 64 битами (до 512), в которых записана исходная длина сообщения в битах. Если исходная длина превышает величину 264, то берутся только последние 64 разряда этого числа. Причем в комбинации используется обратная перестановка. Т.е. первым идет младшее 32-разрядное слово, а затем старшее. В самих словах байты также идут в обратном порядке – от младших к старшим (это связано с представлением чисел в процессорах Intel, на которые ориентирован алгоритм).

3. Внутреннее состояние функции инициализируется стандартными значениями (здесь младшие байты идут первыми):

A = 0x01234567

B = 0x89ABCDEF

С = 0xFEDCBA98

D = 0x76543210

Для дальнейших вычислений также используются четыре функции, выполняющие побитные операции:

F(X,Y,Z) = XY Ú`XZ

G(X,Y,Z) = XZ Ú`ZY

H(X,Y,Z) = X xor Y xor Z

I(X,Y,Z) = Y xor (X Ú`Z)

Кроме того, применяется специальная таблица T из 64-х элементов (от 1 до 64) по 32 бита, значения которых равны

T(i) = [4294967296*abs(sin(i))],

где [] – означает целую часть числа, а i – задается в радианах.



4. Исходное состояние функции меняется путем последовательной обработки блоков данных по 512 бит, которая выполняется на основе следующих соотношений.

Обозначим:

X(j) – j-е слово из 32-х бит в блоке (т.е. от 0 до 15). Причем слово формируется с учетом порядка (сначала идут младшие байты);

N <<< s – циклический сдвиг слова N на s бит влево;

Å – сложение по модулю 232, т.е. при переполнении слова в 32 бита, соответствующий разряд просто игнорируется.

Текущее состояние функции сохраняется в буфере:

AA = A; BB = B; CC = C; DD = D.

После чего проводится пересчет состояний на базе 4-х последовательно выполняемых операций:

A = B Å ((A Å F(B,C,D) Å X(i1) Å T(j1)) <<< s1)

D = A Å ((D Å F(A,B,C) Å X(i2) Å T(j2)) <<< s2)

C = D Å ((C Å F(D,A,B) Å X(i3) Å T(j3)) <<< s3)

B = C Å ((B Å F(C,D,A) Å X(i4) Å T(j4)) <<< s4)

Каждая из приведенных строк выполняется 16 раз в соответствии с индексами, представленными в табл. 9.4.

Таблица 9.4

i1 j1 s1 i2 j2 s2 i3 j3 s3 i4 j4 s4

 

После преобразования вычисляется новое состояние хэш-функции:

A = A Å AA; B = B Å BB; C = C Å CC; D = D Å DD.

5. Когда обработка последнего блока завершится, результатом хеширования будет состояние функции. Причем в порядке возрастания значимости байты следуют так: A, B, C, D.

 

 



<== предыдущая лекция | следующая лекция ==>
Стандарт вычисления аутентифицирующей комбинации HMAC | Хэш-функция SHA-1


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.357 сек.