RIPEMD-160 | |
---|---|
| |
Skapad | 1996 |
publiceras | 18 april 1996 |
Hash storlek | 160 bitar |
Antal omgångar | 80 |
Sorts | hash-funktion |
RIPEMD-160 (från RACE Integrity Primitives Evaluation Message Digest ) är en kryptografisk hashfunktion utvecklad vid katolska universitetet i Louvain av Hans Dobbertin , Anton Bosselaers och Bart Prenel . För ett godtyckligt ingångsmeddelande genererar funktionen ett 160-bitars hashvärde som kallas meddelandesammanfattningen . RIPEMD-160 är en förbättrad version av RIPEMD, som i sin tur använde principerna för MD4 och är jämförbar i prestanda med den vanligare SHA-1 .
Det finns också 128-, 256- och 320-bitarsversioner av denna algoritm, som respektive heter RIPEMD-128 , RIPEMD-256 och RIPEMD-320 . 128-bitarsversionen är bara en ersättning för den ursprungliga RIPEMD, som också var 128-bitars och där sårbarheter hittades [1] . 256-bitars och 320-bitarsversionerna har dubbel längd på sammanfattningen , vilket minskar sannolikheten för kollisioner , men funktionerna är inte längre kryptografiskt starka .
RIPEMD-160 utvecklades i det öppna akademiska samhället, till skillnad från SHA-1 och SHA-2 , som skapades av NSA . Å andra sidan används RIPEMD-160 något mindre frekvent än SHA-1 i praktiken .
Användningen av RIPEMD-160 är inte begränsad av några patent .
Meddelandet utökas så att dess längd i bitar modulo 512 är 448. Sålunda, som ett resultat av expansionen, är meddelandet 64 bitar mindre än en längdmultipel av 512 bitar. Expansionen utförs alltid, även om meddelandet ursprungligen har rätt längd.
Expansionen utförs enligt följande: en bit lika med 1 läggs till meddelandet och sedan läggs bitar lika med 0 tills längden på meddelandet är 448 modulo 512. Totalt läggs minst 1 bit till meddelandet, och som högst 512.
64-bitars representationen (längden på meddelandet innan utfyllnadsbitar läggs till) läggs till resultatet av föregående steg. I det osannolika fallet som är större än , används endast de minst signifikanta 64 bitarna. Dessa bitar läggs till som två 32-bitars ord, med ordet som innehåller de minst signifikanta bitarna läggs till först.
I detta skede (efter att ha lagt till bitarna och längden på meddelandet) får vi ett meddelande med en längd som är en multipel av 512 bitar. Detta motsvarar att detta meddelande är en multipel av 16 32-bitars ord långt. Varje 32-bitars ord innehåller fyra 8-bitars ord, men de följer inte i rad, utan vice versa (till exempel, från åtta 8-bitars ord (abcdefgh) får vi två 32-bitars ord (dcba hgfe)).
I. Icke-linjära bitvisa funktioner:
II. Tillagda hexadecimala konstanter:
III. Välja 32-bitars ord från ett meddelande
VI. Ställ in att bitrotera åt vänster (rullning)
V. Inledande betydelser av sammanfattningsorden
Efter att ha ställt in alla initiala funktioner, konstanter och initiala värden för hashsumorden, kan du fortsätta till exekveringen av algoritmen. Meddelandebehandling sker i 512-bitars block, bestående av 16 ord med 32 bitar vardera (16 * 32 = 512). Varje block bearbetas på två sätt, och resultaten summerar på ett visst sätt.
Nedan är pseudokoden för algoritmen. Addition "+" betyder addition modulo 2 32 , rol s betecknar en cyklisk förskjutning åt vänster med s positioner. Det ursprungliga meddelandet, som består av tblock med 16 32-bitars ord, lagras i arrayen , , [2] . Xi[j]0 <= i < t0 <= j < 16
för i := 0 till (t - 1) { A := hO; B:= hl; C:= h2; D:= h3; E:= h4; A' := h0; B' := hl; C' := h2; D' := h3; E' := h4; för j := 0 till 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:= hl + C + D'; hl:= h2 + D + E'; h2:= h3 + E + A'; h3:= h4 + A + B'; h4:= hO + B + C'; hO := T; }Inmatningssträngen består av ASCII-tecken . Utdatasträngen är en hexadecimal notation.
RIPEMD-160(" Den snabba bruna räven hoppar över den lata hunden ") = 37f332f68db77bd9d7edd4969571ad671cf9dd3bÄven en liten förändring av ett meddelande orsakar en betydande förändring i dess sammanfattning . Till exempel kommer vi att ersätta i exemplet ovan dmed c:
RIPEMD-160("Den kvicka bruna räven hoppar över den lata kuggen") = 132072df690933835eb8b6ad0b77e7b6f14acad7Hashsumman för en tom sträng ser ut så här:
RIPEMD-160("") = 9c1185a5c5e9fc54612808977ee8f548b2258d31Tabellen för jämförelse visar exekveringshastigheterna för MD4-liknande funktioner. Det antas att exekveringskoden och data finns i den exekveringsanordningens cache.
Algoritm | Cyklar | Mbps | Relativ prestation |
---|---|---|---|
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 | |
---|---|
generell mening | |
Kryptografisk | |
Nyckelgenereringsfunktioner | |
Kontrollnummer ( jämförelse ) | |
Hashes |
|