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).
Ссылка на скачивание - внизу страницы.