MD5

MD5 (Message Digest 5) — алгоритм хэширования, разработанный профессором Рональдом Л. Ривестом в 1991 году. Предназначен для создания «отпечатков» или «дайджестов» сообщений произвольной длины. Пришёл на смену MD4, который был несовершенен. Описан в RFC 1321.

В 2004 году в алгоритме обнаружена уязвимость, позволяющая за небольшое время находить коллизии[1] [2]. Рекомендуется применение SHA-1 вместо MD5.

Содержание

Алгоритм MD5

  • Разбиение на блоки по 64 байта (512 бит)
  • Дописывание последовательности 10000…0 || 64 битового значения длины последовательности в битах
  • Инициализируются 4 переменных размером по 32 бита:
    • А = 01 23 45 67;
    • В = 89 AB CD EF;
    • С = FE DC BA 98;
    • D = 76 54 32 10.
  • 4 раунда из 16 операторов. Все операторы однотипны и имеют вид: a = b + ((a + Fun(b,c,d) + Mj + ti) < < Sk)
    • В первом раунде Fun F(X, Y, Z) = XY v (not X)Z.
    • Во втором раунде Fun G(X, Y, Z) = XZ v (not Z)Y.
    • В третьем раунде Fun Н(Х, Y, Z) = Х  Y  Z.
    • В четвертом раунде Fun I(Х, Y, Z) = Y  (X v (not Z)).

Round 1

/*[abcd k s i] a = b + ((a + F(b,c,d) + X[k] + T[i]) <<< s). */

[ABCD 0 7 1][DABC 1 12 2][CDAB 2 17 3][BCDA 3 22 4]

[ABCD 4 7 5][DABC 5 12 6][CDAB 6 17 7][BCDA 7 22 8]

[ABCD 8 7 9][DABC 9 12 10][CDAB 10 17 11][BCDA 11 22 12]

[ABCD 12 7 13][DABC 13 12 14][CDAB 14 17 15][BCDA 15 22 16]

Round 2

/*[abcd k s i] a = b + ((a + G(b,c,d) + X[k] + T[i]) <<< s). */

[ABCD 1 5 17][DABC 6 9 18][CDAB 11 14 19][BCDA 0 20 20]

[ABCD 5 5 21][DABC 10 9 22][CDAB 15 14 23][BCDA 4 20 24]

[ABCD 9 5 25][DABC 14 9 26][CDAB 3 14 27][BCDA 8 20 28]

[ABCD 13 5 29][DABC 2 9 30][CDAB 7 14 31][BCDA 12 20 32]

Round 3

/*[abcd k s t] a = b + ((a + H(b,c,d) + X[k] + T[i]) <<< s). */

[ABCD 5 4 33][DABC 8 11 34][CDAB 11 16 35][BCDA 14 23 36]

[ABCD 1 4 37][DABC 4 11 38][CDAB 7 16 39][BCDA 10 23 40]

[ABCD 13 4 41][DABC 0 11 42][CDAB 3 16 43][BCDA 6 23 44]

[ABCD 9 4 45][DABC 12 11 46][CDAB 15 16 47][BCDA 2 23 48]

Round 4

/*[abcd k s t] a = b + ((a + I(b,c,d) + X[k] + T[i]) <<< s). */


[ABCD 0 6 49][DABC 7 10 50][CDAB 14 15 51][BCDA 5 21 52]

[ABCD 12 6 53][DABC 3 10 54][CDAB 10 15 55][BCDA 1 21 56]

[ABCD 8 6 57][DABC 15 10 58][CDAB 6 15 59][BCDA 13 21 60]

[ABCD 4 6 61][DABC 11 10 62][CDAB 2 15 63][BCDA 9 21 64]


Уязвимости

  • MD5(X1||S) = MD5(X2||S) если MD5(X1) = MD5(X2)

См. также

Ссылки

 
Начальная страница  » 
А Б В Г Д Е Ж З И Й К Л М Н О П Р С Т У Ф Х Ц Ч Ш Щ Ы Э Ю Я
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
0 1 2 3 4 5 6 7 8 9 Home