|
sL[0..15] |
11 |
14 |
15 |
12 |
5 |
8 |
7 |
9 |
11 |
13 |
14 |
15 |
6 |
7 |
9 |
8 |
|
sL[16..31] |
7 |
6 |
8 |
13 |
11 |
9 |
7 |
15 |
7 |
12 |
15 |
9 |
11 |
7 |
13 |
12 |
|
sL[32..47] |
11 |
13 |
6 |
7 |
14 |
9 |
13 |
15 |
14 |
8 |
13 |
6 |
5 |
12 |
7 |
5 |
|
sL[48..63] |
11 |
12 |
14 |
15 |
14 |
15 |
9 |
8 |
9 |
14 |
5 |
6 |
8 |
6 |
5 |
12 |
|
sL[64..79] |
9 |
15 |
5 |
11 |
6 |
8 |
13 |
12 |
5 |
12 |
13 |
14 |
11 |
8 |
5 |
6 |
|
sR[0..15] |
8 |
9 |
9 |
11 |
13 |
15 |
15 |
5 |
7 |
7 |
8 |
11 |
14 |
14 |
12 |
6 |
|
sR[16..31] |
9 |
13 |
15 |
7 |
12 |
8 |
9 |
11 |
7 |
7 |
12 |
7 |
6 |
15 |
13 |
11 |
|
sR[32..47] |
9 |
7 |
15 |
11 |
8 |
6 |
6 |
14 |
12 |
13 |
5 |
14 |
13 |
13 |
7 |
5 |
|
sR[48..63] |
15 |
5 |
8 |
11 |
14 |
14 |
6 |
14 |
6 |
9 |
12 |
9 |
12 |
5 |
15 |
8 |
|
sR[64..79] |
8 |
5 |
12 |
9 |
12 |
5 |
14 |
6 |
8 |
13 |
6 |
5 |
15 |
13 |
11 |
11 |
2. Передобробка. Доповнити рядок
х так, щоб його довжина була кратна
числу 512. Для цього додати в кінець рядка одиницю, а потім стільки нульових
біт, скільки необхідно для одержання рядка довжиною на 64 біта коротше довжини
кратної 512. Нарешті, додати останні два 32-х розрядні слова, що містять двійкове
представлення числа
. Нехай
–
кількість 512-бітних блоків в отриманому доповненому рядку. У такий спосіб
форматований вхід складається з
32-х розрядних слів
.
Ініціалізувати вектор змінних зчеплення
.
3. Обробка.
Для всіх
від 0 до
кожен
-й блок з шістнадцяти 32-х бітних слів записати
в тимчасовий масив
, для
. Потім
а) виконати п'ять 16-ти крокових циклів лівої лінії.
Ініціалізувати робочі змінні
.
Виконати:
Для
до
15
;
.
Для
до
31
;
.
Для
до
47
;
.
Для
до
63
;
.
Для
до 79
;
.
б) виконати паралельно з циклами лівої лінії п’ять 16-ти крокових циклів правої лінії.
Ініціалізувати робочі змінні
.
Виконати:
Для
до
15
;
.
Для
до 31
;
.
Для
до 47
;
.
Для
до 63
;
.
Для
до 79
;
.
в) Обновити змінні зчеплення
;
;
;
;
;
.
4. Завершення. Як
хеш-код прийняти величину:
.
Алгоритм RIPEMD-128.
Основні відмінності алгоритму RIPEMD-128 від RIPEMD-160 полягають в такому:
– довжина хеш-кода складає 128 біт (чотири 32-х бітні слова);
– функція складається з чотирьох циклів і, відповідно, використовується чотири 32-х розрядні змінні зчеплення;
– основна операція циклу має вигляд:
;
;
– визначені тільки
чотири бульові функції
,
,
і
;
– з переліку констант
виключаються значення
і
, а з переліку векторів ініціалізації виключають
.
Таким чином, принципи побудови хеш-функцій сімейства RIPEMD можна сформулювати таким способом:
1. Побудова хеш-функції здійснюється на основі застосування двох паралельних ліній хешування, кожна з який містить три (RIPEMD), чотири (RIPEMD-128) чи п'ять (RIPEMD-160) циклів.
2. Використання двох регістрів зсуву в основній операції.
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.