Sunteți pe pagina 1din 3

Calcularea valorilor hash criptografice cu algoritmul Adler-32

Descrierea algoritmului Adler-32

Adler-32 se obtine prin calcularea a două sume de control pe 16 biti A si B si


concatenarea biti lor într-un întreg pe 32 de biti. A este suma tuturor octetilor în
fluxul plus unu, iar B este suma valorilor individuale ale lui A de la fiecare pas.
La începutul unei algoritmului Adler-32, lista A este initializata cu 1, iar lista B cu
0. Sumele sunt efectuate modulo 65521 (cel mai mare număr prim mai mic decât
2^16). Acesti octeti sunt stocate în ordine (big endian), B ocupă doi octeti cei mai
semnificativi.

Unde D este șirul de octeți pentru care se calculează suma de control și n este
lungimea lui D.

A = 1 + D1 + D2 + ... + Dn (mod 65521)

B =(0+ D1) + (1 + D1 + D2) + ... + (1 + D1 + D2 + ... + Dn) (mod 65521)= n×D1


+ (n−1)×D2 + (n−2)×D3 + ... + Dn + n (mod 65521)

Adler-32(D) = B × 65536 + A

-Crearea unui hash cu Adler-32 în care se va hash-a Amic-0384017b.


A-65

m-109

i-105

c-99

A B Listele A și B
65+1=66 0+65=65 A=65
66+109=175 65+175=240 m=109
175+105=280 240+280=520 i=105
280+99=379 520+478=998 c=99

A=478=017b=17B.

B=998=0384=384.

Output=0384017B.

0384017B---hashul
Această utilizare o vom utiliza în protocolul de semnătură RSA.
Pentru a initia protcolul se calculeaza urmatoarele secituni:

I.Generarea cheilor

II.Crearea semnaturii:

III.Verificarea semnaturii:

I.Generarea cheilor: (Utilizatorul A)

1.Fie p=67, q=71.

2. Calculam valoarea lui n, n=p*q. n=67*71=4757.

3.Calculam Coeficientul lui Euler: ϕ(n)=(p-1)(q-1), ϕ(n)=(67-1)(71-


1)=66*70=4620.

4.Alegem valoarea chei publice e care apartine intervalului (2,4620), fie e=23.

5.Din Teorema Mica Fermat rezulta e*d mod ϕ(n) = 1, atunci valoare lui d se
calculează:

d=e(-1) mod ϕ(n) deci rezulta că d = 23(-1) mod4620=1607.

II.Crearea semnaturii: (Utilizatorul A)

1.Fie mesajul pentru semnare “Card”.

2.Calculam valoarea de hash-are a acestui mesaj Amic, Se va calcula valoare de hash


cu algoritmul Adler-32.

M=”Amic”. h(M)= 0384017B.

3. Calculul semnaturii: S=(0384017B)dmod n, S=(037B017B)1607mod4757.

(0384017B)16-----------(58982779)10 Conversia numerelor din hexazecimal in


zecimal.

S = (58982779) 1607 mod 4757=3885. (Conform tabelei ASCII extinse calculam


3885mod 256=45, ce corespunde in table simboluli -- “-“).

III.Verificarea semnaturii: (Verificarea semnaturii se face cu cheia publica)


(Utilizatorul B)
1.Fie S=3885, Verif(S) = Se mod n, Verif(S)e =388523*1607 mod 4757= 3885 mod
4757=3885. Semnatura este valida.

S-ar putea să vă placă și