SHA-1
Izvor: Wikipedija
SHA-1 skraćenica je od engleske složenice Secure Hash Algorithm i ime je za algoritam koji služi za provjeru autentičnosti datoteka ili poruke prilikom prijenosa između pošiljaoca i primatelja. SHA-1 je nasljednik MD-5 koristi se u raznim sigurnosnim programima ili u protokomima kao: TLS, SSL, PGP, SSH, S/MIME, i IPsec. Sigurnosno, SHA-1 je kompromitiran 2002. [1] nakon čega je razvijena poboljšana inačica SHA-2.
[uredi] Algoritam SHA-1
Pseudokod algoritma SHA-1 :
Opaska: Sve varijable su unsigned 32 bita dugačke modulo 232 kod računanja Inicializiraj variables: h0 := 0x67452301 h1 := 0xEFCDAB89 h2 := 0x98BADCFE h3 := 0x10325476 h4 := 0xC3D2E1F0 Pred-obrada: dodaj bit '1' na kraj poruke dodaj k bitova '0', gdje je k broj >= 0 tako da rezutirajuća poruka dužina (u bitovima) je congruent 448 (mod 512) dodaj dužinu poruke (prije pred-obrade), u bitovima, kao 64-bitni big-endian cijeli broj Obradi poruku u sekventim nizovima od 512-bita: razbij poruku u komade od 512-bita za svaki komad razbij komad u šestnajst 32-bitne big-endian riječi w[i], 0 ≤ i ≤ 15 Produži šestnajst 32-bitne u osam 32-bitne riječi: za i od 16 do 79 w[i] := (w[i-3] xor w[i-8] xor w[i-14] xor w[i-16]) rotirajlijevo 1 Inicializiraj hash vrijednost za svaki komad: a := h0 b := h1 c := h2 d := h3 e := h4 Glavna petlja: za i od 0 do 79 ako 0 ≤ i ≤ 19 tada f := (b and c) or ((not b) and d) k := 0x5A827999 onda ako 20 ≤ i ≤ 39 f := b xor c xor d k := 0x6ED9EBA1 onda ako 40 ≤ i ≤ 59 f := (b i c) or (b i d) or (c i d) k := 0x8F1BBCDC onda ako 60 ≤ i ≤ 79 f := b xor c xor d k := 0xCA62C1D6 temp := (a rotrirajlijevo 5) + f + e + k + w[i] e := d d := c c := b rotirajlijevo 30 b := a a := temp Add this chunk's hash to result so far: h0 := h0 + a h1 := h1 + b h2 := h2 + c h3 := h3 + d h4 := h4 + e Proizvedi završnu hash vrijednost (big-endian): digest = hash = h0 poveži h1 poveži h2 poveži h3 poveži h4
Umjesto korištenje originalne formulacije u FIPS PUB 180-1 može se koristit sljeći izraz f
u glavoj petlji prikazanoj iznad:
(0 ≤ i ≤ 19): f := d xor (b i (c xor d)) (alternative) (40 ≤ i ≤ 59): f := (b i c) ili (d i (b ili c)) (alternativa 1) (40 ≤ i ≤ 59): f := (b i c) ili (d i (b xor c)) (alternativa 2) (40 ≤ i ≤ 59): f := (b i c) + (d i (b xor c)) (alternativa 3)
[uredi] Vanjske poveznice
- Crypto++ besplatna biblioteka kriptografskih rutina u C++