MD5

Straipsnis iš Vikipedijos, laisvosios enciklopedijos.
Peršokti į: navigaciją, paiešką

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.

Santraukos skaičiavimas[taisyti | redaguoti kodą]

  • Pradinis tekstas suskirstomas į N blokų po 512 bitų (64 baitus).
  • Jei paskutiniame M_N bloke trūksta informacijos iki 512 bitų, bloko gale pridedamas 1 ir tiek 0, kad būtų užpildyta likusi bloko dalis.
  • Pradinis kontrolinis blokas MD_0 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 M_q atliekamas kontrolinio bloko MD_q skaičiavimas, naudojantis ankstesniu kontroliniu bloku MD_{q-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ė.