Стандарты Хеш-функций. Основные определения и требования безопасности к функциям хеширования, страница 8

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. Використання двох регістрів зсуву в основній операції.