ФЭНДОМ


RIPEMD-320 - хэш-функция разработанная Хансом Доббертином, Антоном Боселаерсом и Бартом Принилом в 1996 году. Размер хэша - 320 бит. Размер блока входных данных - 512 бит. Уязвимостей на текущий момент не обнаружено. RIPEMD-320 является развитием RIPEMD-160, и предназначена для приложений, которые требуют более длительного результата хеширования, не нуждающегося в большей безопасности, чем приложения уровня RIPEMD-160.

Пример:Править

RIPEMD-320("") = 22d65d5661536cdc75c1fdf5c6de7b41b9f27325ebc61e8557177d705a0ec880151c3a32a00899b8

RIPEMD-320("а") = ce78850638f92658a5a585097579926dda667a5716562cfcf6fbe77f63542f99b04705d6970dff5d


Псевдокод для RIPEMD-320Править

 RIPEMD-320: определения


   nonlinear functions at bit level: exor, mux, -, mux, -
   f(j, x, y, z) = x XOR y XOR z                (0 <= j <= 15)
   f(j, x, y, z) = (x AND y) OR (NOT(x) AND z)  (16 <= j <= 31)
   f(j, x, y, z) = (x OR NOT(y)) XOR z          (32 <= j <= 47)
   f(j, x, y, z) = (x AND z) OR (y AND NOT(z))  (48 <= j <= 63)
   f(j, x, y, z) = x XOR (y OR NOT(z))          (64 <= j <= 79)


    константы (шестнадцатеричные)
   K(j) = 0x00000000      (0 <= j <= 15)     
   K(j) = 0x5A827999     (16 <= j <= 31)      int(2**30 x sqrt(2))
   K(j) = 0x6ED9EBA1     (32 <= j <= 47)      int(2**30 x sqrt(3))
   K(j) = 0x8F1BBCDC     (48 <= j <= 63)      int(2**30 x sqrt(5))
   K(j) = 0xA953FD4E     (64 <= j <= 79)      int(2**30 x sqrt(7))
   K'(j) = 0x50A28BE6     (0 <= j <= 15)      int(2**30 x cbrt(2))
   K'(j) = 0x5C4DD124    (16 <= j <= 31)      int(2**30 x cbrt(3))
   K'(j) = 0x6D703EF3    (32 <= j <= 47)      int(2**30 x cbrt(5))
   K'(j) = 0x7A6D76E9    (48 <= j <= 63)      int(2**30 x cbrt(7))
   K'(j) = 0x00000000    (64 <= j <= 79)


   выбор слов в сообщении
   r(j)      = j                    (0 <= j <= 15)
   r(16..31) = 7, 4, 13, 1, 10, 6, 15, 3, 12, 0, 9, 5, 2, 14, 11, 8
   r(32..47) = 3, 10, 14, 4, 9, 15, 8, 1, 2, 7, 0, 6, 13, 11, 5, 12
   r(48..63) = 1, 9, 11, 10, 0, 8, 12, 4, 13, 3, 7, 15, 14, 5, 6, 2
   r(64..79) = 4, 0, 5, 9, 7, 12, 2, 10, 14, 1, 3, 8, 11, 6, 15, 13
   r'(0..15) = 5, 14, 7, 0, 9, 2, 11, 4, 13, 6, 15, 8, 1, 10, 3, 12
   r'(16..31)= 6, 11, 3, 7, 0, 13, 5, 10, 14, 15, 8, 12, 4, 9, 1, 2
   r'(32..47)= 15, 5, 1, 3, 7, 14, 6, 9, 11, 8, 12, 2, 10, 0, 4, 13
   r'(48..63)= 8, 6, 4, 1, 3, 11, 15, 0, 5, 12, 2, 13, 9, 7, 10, 14
   r'(64..79)= 12, 15, 10, 4, 1, 5, 8, 7, 6, 2, 13, 14, 0, 3, 9, 11


   сумма для левого поворота
   s(0..15)  = 11, 14, 15, 12, 5, 8, 7, 9, 11, 13, 14, 15, 6, 7, 9, 8
   s(16..31) = 7, 6, 8, 13, 11, 9, 7, 15, 7, 12, 15, 9, 11, 7, 13, 12
   s(32..47) = 11, 13, 6, 7, 14, 9, 13, 15, 14, 8, 13, 6, 5, 12, 7, 5
   s(48..63) = 11, 12, 14, 15, 14, 15, 9, 8, 9, 14, 5, 6, 8, 6, 5, 12
   s(64..79) = 9, 15, 5, 11, 6, 8, 13, 12, 5, 12, 13, 14, 11, 8, 5, 6
   s'(0..15) = 8, 9, 9, 11, 13, 15, 15, 5, 7, 7, 8, 11, 14, 14, 12, 6
   s'(16..31)= 9, 13, 15, 7, 12, 8, 9, 11, 7, 7, 12, 7, 6, 15, 13, 11
   s'(32..47)= 9, 7, 15, 11, 8, 6, 6, 14, 12, 13, 5, 14, 13, 13, 7, 5
   s'(48..63)= 15, 5, 8, 11, 14, 14, 6, 14, 6, 9, 12, 9, 12, 5, 15, 8
   s'(64..79)= 8, 5, 12, 9, 12, 5, 14, 6, 8, 13, 6, 5, 15, 13, 11, 11


   первоначалыные значения (шестнадцатиричные)
   h0 = 0x67452301; h1 = 0xEFCDAB89; h2 = 0x98BADCFE; h3 = 0x10325476; h4 = 0xC3D2E1F0;
   h5 = 0x76543210; h6 = 0xFEDCBA98; h7 = 0x89ABCDEF; h8 = 0x01234567; h9 = 0x3C2D1E0F;


 RIPEMD-320: псевдокод


   for i := 0 to t-1 {
       A := h0; B := h1; C := h2; D = h3; E = h4;
       A' := h5; B' := h6; C' := h7; D' = h8; E' = h9;
       for j := 0 to 79 {
           T := rol_s(j)(A [+] f(j, B, C, D) [+] X[i][r(j)] [+] K(j)) [+] E;
           A := E; E := D; D := rol_10(C); C := B; B := T;
           T := rol_s'(j)(A' [+] f(79-j, B', C', D') [+] X[i][r'(j)] [+] K'(j)) [+] E';
           A' := E'; E' := D'; D' := rol_10(C'); C' := B'; B' := T;
           if j == 15 {
               T := B; B := B'; B' := T;
           } else if j == 31 {
               T := D; D := D'; D' := T;
           } else if j == 47 {
               T := A; A := A'; A' := T;
           } else if j == 63 {
               T := C; C := C'; C' := T;
           } else if j == 79 {
               T := E; E := E'; E' := T;
           }
       }
       h0 := h0 + A; h1 := h1 + B; h2 := h2 + C; h3 := h3 + D; h4 := h4 + E;
       h5 := h5 + A'; h6 := h6 + B'; h7 := h7 + C'; h8 := h8 + D'; h9 := h9 + E';
   }

См. также:Править

Обнаружено использование расширения AdBlock.


Викия — это свободный ресурс, который существует и развивается за счёт рекламы. Для блокирующих рекламу пользователей мы предоставляем модифицированную версию сайта.

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

Также на ФЭНДОМЕ

Случайная вики