You are on page 1of 4

Adler-32-Card

Algoritmul utilizat in hash-are

• 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=65536). 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+(1 + 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 Card-037B017B

ASCII code: C-67; a-97; r-114; d-100


A B
1+67=68 0+67=67
68+97=165 67+165=232
165+114=279 232+279=511
279+100=379 511+379=890

A=379=017B
B=890=037B
Output=037B017B Hash

You might also like