русс | укр

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

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

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

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


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

Хэш-функция SHA-1


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


Функция SHA-1 (Security Hash Algorithm) является стандартом для выработки цифровой подписи в США и ряде других стран.

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

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

Шаги 1 и 2 работы функции идентичны функции MD5.

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

H0 = 0x01234567 H1 = 0x89ABCDEF

H2 = 0xFEDCBA98 H3 = 0x76543210

H4 = 0xF0E1D2C3

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

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

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

F3(X,Y,Z) = XY Ú XZ Ú YZ

Кроме того, применяются четыре константы:

K1 = 0x5A827999; K2 = 0x6ED9EBA1;

K3 = 0x8F1BBCDC; K4 = 0xCA62C1D6.

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

Обозначим:

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

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

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

Текущее состояние функции переписывается для преобразований:

A = H0; B = H1; C = H2; D = H3; E = H4.

Вычисляются дополнительные 64 комбинации 32-х разрядных комбинаций:

Wi = (Wi–3 xor Wi–8 xor Wi–14 xor Wi–16) <<< 1; i = 16 … 79.

5. Для всех комбинаций Wi (i = 0 … 79) производятся последовательные вычисления:

T = (A <<< 5) Å F(B,C,D) Å E Å Wi Å K;



E = D; D = C; C = B <<< 30; B = A; A = T.

Причем для соответствующих номеров используются различные функции и константы, они указаны в табл. 9.5.

Таблица 9.5

Диапазон i Функция Константа
00 … 19 F1 K1
20 … 39 F2 K2
40 … 59 F3 K3
60 … 79 F2 K4

 

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

H0 = A Å H0; H1 = B Å H1; H2 = C Å H2;

H3 = D Å H3; H4 = E Å H4.

7. Когда обработка последнего блока завершится, результатом хеширования будет состояние функции. Причем в порядке возрастания значимости байты следуют так: H0, H1, H2, H3, H4.

 

 



<== предыдущая лекция | следующая лекция ==>
Хэш-функция MD5 | Процедуры выработки цифровой подписи по ГОСТ


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


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

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

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


 


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

 
 

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

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