Стандарт ISO/IEC 10118-3 пропонує хеш-функції – RIPEMD-160 і RIPEMD-128, які є подальшим вдосконаленням початкової версії алгоритму RIPEMD (1995 року). За оцінками розроблювачів хеш-функція RIPEMD-160 повинна залишатися безпечною протягом десяти найближчих років.
Алгоритм RIPEMD-160.
Розмір хеш-кода і перемінних зчеплень RIPEMD-160 дорівнює 160 бітам (п'ять 32-х розрядних слів). Кількість циклів збільшена з трьох (як у RIPEMD) до п'яти. Крім того, внесені додаткові зміни в паралельні лінії алгоритму. Тепер права і ліва лінії відрізняються не тільки застосовуваними константами, але і порядком проходження бульових функцій. Для алгоритму RIPEMD-160 визначені такі бульові функції:
;
;
;
;
.
Усі позначення аналогічні раніше використаним позначенням при описі алгоритму SHA-1.
На рис. 2.7 представлена загальна структура хеш-функції RIPEMD-160.
Алгоритм RIPEMD-160
Вхід. Двійковий рядок довжиною .
Вихід. 160-бітний хеш-код за рядком .
1. Ініціалізація.
а) Ініціалізувати п'ять векторів ініціалізації:
; ; ;
; .
б) Задати для лівої і правої ліній алгоритму додаткові константи:
– ліва лінія:
;
;
;
;
;
– права лінія:
;
;
;
;
.
Рис. 2.7. Схема хеш-функции RIPEMD-160.
в) задати порядок подачі слів повідомлення на ліву праву лінії. Порядок подачі слів визначається на основі таких перестановок:
– для лівої лінії визначається перестановка , а для циклів порядок слів визначається в такий спосіб:
i |
zL[0..15] |
0 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
r(i) |
zL[16..31] |
7 |
4 |
13 |
1 |
10 |
6 |
15 |
3 |
12 |
0 |
9 |
5 |
2 |
14 |
11 |
8 |
r2(i) |
zL[32..47] |
3 |
10 |
14 |
4 |
9 |
15 |
8 |
1 |
2 |
7 |
0 |
6 |
13 |
11 |
5 |
12 |
r3(i) |
zL[48..63] |
1 |
9 |
11 |
10 |
0 |
8 |
12 |
4 |
13 |
3 |
7 |
15 |
14 |
5 |
6 |
2 |
r4(i) |
zL[64..79] |
4 |
0 |
5 |
9 |
7 |
12 |
2 |
10 |
14 |
1 |
3 |
8 |
11 |
6 |
15 |
13 |
– для правої лінії визначається перестановка і порядок подачі слів визначається з використанням перестановки у такий спосіб:
p(i) |
zR[0..15] |
5 |
14 |
7 |
0 |
9 |
2 |
11 |
4 |
13 |
6 |
15 |
8 |
1 |
10 |
3 |
12 |
rp(i) |
zR[16..31] |
6 |
11 |
3 |
7 |
0 |
13 |
5 |
10 |
14 |
15 |
8 |
12 |
4 |
9 |
1 |
2 |
r2p(i) |
zR[32..47] |
15 |
5 |
1 |
3 |
7 |
14 |
6 |
9 |
11 |
8 |
12 |
2 |
10 |
0 |
4 |
13 |
r3p(i) |
zR[48..63] |
8 |
6 |
4 |
1 |
3 |
11 |
15 |
0 |
5 |
12 |
2 |
13 |
9 |
7 |
10 |
14 |
r4p(i) |
zR[64..79] |
12 |
15 |
10 |
4 |
1 |
5 |
8 |
7 |
6 |
2 |
13 |
14 |
0 |
3 |
9 |
11 |
г) визначити для лівої и правої ліній аргументи для операторів циклічного зсуву відповідно до таблиці:
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.