MD5

Straipsnis iš Vikipedijos, laisvosios enciklopedijos.

MD5 (Message-Digest algorithm 5) – žinutės santraukos algoritmas, plačiai naudojama kriptografijos maišos funkcija su 128 bitų (16 baitų) maišos reikšme.

[taisyti] Santraukos skaičiavimas

  • Pradinis tekstas suskirstomas į N blokų po 512 bitų (64 baitus).
  • Jei paskutiniame MN bloke trūksta informacijos iki 512 bitų, bloko gale pridedamas 1 ir tiek 0, kad užpildyti likusią bloko dalį.
  • Pradinis kontrolinis blokas MD0 yra užpildytas.

A: 01 23 45 67

B: 89 ab cd ef

C: fe dc ba 98

D: 76 54 32 10

  • Naudojamos keturios pagalbinės funkcijos kurios operuoja su trimis 32-bitų žodžiais, ir grąžina vieną 32-bitų žodį.

F(X,Y,Z)\ =\ XY\  or\ not\ X\ Z

G(X,Y,Z)\ =\ XZ\ or\ Y\ not\ Z

H(X,Y,Z)\ =\ X\ xor\ Y\ xor\ Z

I(X,Y,Z)\ =\ Y\ xor\ (X\ and\ not\ Z)

  • Su kiekvienu bloku Mq atliekamas kontrolinio bloko MDq skaičiavimas, naudojantis ankstesniu kontroliniu bloku MDq − 1. Yra atliekami tokie veiksmai:

Kopijuojamas blokas q į X X[j] = M[q * 16 + j]. Išsaugomos A,B,C,D reikšmės

AA = A

BB = B

CC = C

DD = D

Atliekami skaičiavimai:

A\ =\ B\ +\ ((A\ +\ F(B,C,D)\ +\ X[k]\ +\ T[i])\ <<<\ s)

A\ =\ B\ +\ ((A\ +\ G(B,C,D)\ +\ X[k]\ +\ T[i])\ <<<\ s)

A\ =\ B\ +\ ((A\ +\ H(B,C,D)\ +\ X[k]\ +\ T[i])\ <<<\ s)

A\ =\ B\ +\ ((A\ +\ I(B,C,D)\ +\ X[k]\ +\ T[i])\ <<<\ s)

Sudedame:

A\ =\ A\ +\ AA

B\ =\ B\ +\ BB

C\ =\ C\ +\ CC

D\ =\ D\ +\ DD

  • Atlikus šiuos veiksmus visiems blokams gautos A,B,C,D reikšmės yra maišos funkcijos reikšmė.