RIPEMD-160 | |
---|---|
| |
Oprettet | 1996 |
offentliggjort | 18. april 1996 |
Hash størrelse | 160 bit |
Antal runder | 80 |
Type | hash funktion |
RIPEMD-160 (fra RACE Integrity Primitives Evaluation Message Digest ) er en kryptografisk hashfunktion udviklet ved det katolske universitet i Louvain af Hans Dobbertin , Anton Bosselaers og Bart Prenel . For en vilkårlig inputmeddelelse genererer funktionen en 160-bit hashværdi kaldet meddelelsesoversigten . RIPEMD-160 er en forbedret version af RIPEMD, som igen brugte principperne for MD4 og er sammenlignelig i ydeevne med den mere almindelige SHA-1 .
Der er også 128-, 256- og 320-bit versioner af denne algoritme, som henholdsvis er navngivet RIPEMD-128 , RIPEMD-256 og RIPEMD-320 . 128-bit versionen er kun en erstatning for den originale RIPEMD, som også var 128-bit og hvor der blev fundet sårbarheder [1] . 256-bit og 320-bit versionerne har dobbelt længde af resuméet , hvilket reducerer sandsynligheden for kollisioner , men funktionerne er ikke længere kryptografisk stærke .
RIPEMD-160 blev udviklet i det åbne akademiske samfund, i modsætning til SHA-1 og SHA-2 , som blev skabt af NSA . På den anden side bruges RIPEMD-160 noget sjældnere end SHA-1 i praksis .
Brugen af RIPEMD-160 er ikke begrænset af nogen patenter .
Meddelelsen udvides således, at dens længde i bit modulo 512 er 448. Som et resultat af udvidelsen er meddelelsen således 64 bit mindre end et længdemultiplum på 512 bit. Udvidelsen udføres altid, selvom beskeden oprindeligt har den korrekte længde.
Udvidelsen udføres som følger: en bit lig med 1 tilføjes til beskeden, og derefter tilføjes bit lig med 0 indtil længden af beskeden er 448 modulo 512. I alt tilføjes mindst 1 bit til beskeden , og som maksimum 512.
64-bit repræsentationen (længden af meddelelsen før udfyldningsbits tilføjes) føjes til resultatet af det foregående trin. I det usandsynlige tilfælde, der er større end , bruges kun de mindst signifikante 64 bits. Disse bits tilføjes som to 32-bit ord, hvor ordet indeholder de mindst signifikante bit tilføjet først.
På dette stadium (efter tilføjelse af bits og længden af beskeden) får vi en besked med en længde, der er et multiplum af 512 bit. Dette svarer til, at denne meddelelse er et multiplum af 16 32-bit ord lang. Hvert 32-bit ord indeholder fire 8-bit ord, men de følger ikke efter hinanden, men omvendt (f.eks. fra otte 8-bit ord (abcdefgh) får vi to 32-bit ord (dcba hgfe)).
I. Ikke-lineære bitvise funktioner:
II. Tilføjede hexadecimale konstanter:
III. Valg af 32-bit ord fra en besked
VI. Indstil til at rotere til venstre (rulledrift)
V. Indledende betydninger af resuméordene
Efter at have indstillet alle de indledende funktioner, konstanter og begyndelsesværdier for hash-sumordene, kan du fortsætte til udførelsen af algoritmen. Beskedbehandling foregår i 512-bit blokke, bestående af 16 ord á 32 bit hver (16 * 32 = 512). Hver blok behandles på to måder, og resultaterne lægges sammen på en bestemt måde.
Nedenfor er pseudokoden for algoritmen. Addition "+" betyder addition modulo 2 32 , rol s angiver et cyklisk skift til venstre ved s positioner. Den originale besked, der består af tblokke af 16 32-bit ord, er lagret i arrayet , , [2] . Xi[j]0 <= i < t0 <= j < 16
for i := 0 til (t - 1) { A := h0; B: = h1; C:= h2; D:= h3; E:= h4; A' := h0; B' := h1; C' := h2; D' := h3; E' := h4; for j := 0 til 79 { T:= rol s(j) (A + f(j; B; C; D) + Xi [ r (j)] + K(j)) + E; A:= E; E:= D; D: = rulle 10 (C); C:= B; B:= T; T:= rol s'(j) (A' + f(79 - j; B'; C'; D') + Xi [ r '(j)] + K'(j)) + E'; A' := E'; E' := D'; D' := rulle 10 (C'); C' := B'; B' := T; } T:= h1 + C + D'; h1:= h2 + D + E'; h2:= h3 + E + A'; h3:= h4 + A + B'; h4:= h0 + B + C'; h0:= T; }Indtastningsstrengen består af ASCII-tegn . Outputstrengen er en hexadecimal notation.
RIPEMD-160(" Den hurtige brune ræv hopper over den dovne hund ") = 37f332f68db77bd9d7edd4969571ad671cf9dd3bSelv en lille ændring af en besked forårsager en væsentlig ændring i dens resumé . For eksempel erstatter vi i eksemplet ovenfor dmed c:
RIPEMD-160("Den hurtige brune ræv hopper over det dovne tandhjul") = 132072df690933835eb8b6ad0b77e7b6f14acad7Hash summen af en tom streng ser sådan ud:
RIPEMD-160("") = 9c1185a5c5e9fc54612808977ee8f548b2258d31Tabellen til sammenligning viser udførelseshastighederne for MD4-lignende funktioner. Det antages, at eksekveringskoden og data er i cachen på den eksekverende enhed.
Algoritme | Cykler | Mbps | Relativ præstation |
---|---|---|---|
MD4 | 241 | 191,2 | 1.00 |
MD5 | 337 | 136,7 | 0,72 |
RIPEMD | 480 | 96,0 | 0,50 |
RIPEMD-128 | 592 | 77,8 | 0,41 |
SHA-1 | 837 | 55,1 | 0,29 |
RIPEMD-160 | 1013 | 45,5 | 0,24 |
Hash funktioner | |
---|---|
generelle formål | |
Kryptografisk | |
Nøglegenereringsfunktioner | |
Tjek nummer ( sammenligning ) | |
Hashes |
|