RIPEMD-160 | |
---|---|
| |
Létrehozva | 1996 |
közzétett | 1996. április 18 |
Hash méret | 160 bites |
A körök száma | 80 |
Típusú | hash függvény |
A RIPEMD-160 (a RACE Integrity Primitives Evaluation Message Digest -ből ) egy kriptográfiai hash függvény , amelyet a Louvaini Katolikus Egyetemen fejlesztettek ki Hans Dobbertin , Anton Bosselaers és Bart Prenel . Egy tetszőleges bemeneti üzenethez a függvény egy 160 bites hash értéket generál, amelyet üzenetösszegzésnek neveznek . A RIPEMD-160 a RIPEMD továbbfejlesztett változata, amely viszont az MD4 alapelveit használta, és teljesítményében összehasonlítható a gyakoribb SHA-1-gyel .
Ennek az algoritmusnak 128, 256 és 320 bites verziója is létezik, amelyek neve RIPEMD-128 , RIPEMD-256 és RIPEMD-320 . A 128 bites verzió csak az eredeti RIPEMD helyettesítője, amely szintén 128 bites volt, és amelyben sebezhetőségeket találtak [1] . A 256 bites és 320 bites verziók dupla hosszúságú összefoglalót tartalmaznak , ami csökkenti az ütközések valószínűségét , de a funkciók már nem kriptográfiailag erősek .
A RIPEMD-160-at a nyílt akadémiai közösségben fejlesztették ki, ellentétben az SHA-1-gyel és az SHA-2-vel , amelyeket az NSA hozott létre . Másrészt a RIPEMD-160-at valamivel ritkábban használják, mint az SHA-1 -et a gyakorlatban .
A RIPEMD-160 használatát semmilyen szabadalom nem korlátozza .
Az üzenetet úgy bővítjük, hogy a modulo 512 bitben kifejezett hossza 448 legyen. Így a bővítés eredményeként az üzenet 64 bittel marad el az 512 bites hossz többszörösétől. A kiterjesztés mindig megtörténik, még akkor is, ha az üzenet eredetileg megfelelő hosszúságú.
A bővítés a következőképpen történik: az üzenethez egy 1-gyel egyenlő bitet adunk, majd 0-val egyenlő biteket adunk hozzá, amíg az üzenet hossza 448 modulo 512 lesz. Összesen legalább 1 bit hozzáadódik az üzenethez , és maximum 512.
A 64 bites reprezentáció (az üzenet hossza a kitöltési bitek hozzáadása előtt) hozzáadódik az előző lépés eredményéhez. Abban a valószínűtlen esetben, ha nagyobb, mint , csak a legkisebb jelentőségű 64 bit kerül felhasználásra. Ezeket a biteket két 32 bites szóként adják hozzá, és először a legkevésbé jelentős biteket tartalmazó szót adják hozzá.
Ebben a szakaszban (a bitek és az üzenet hosszának összeadása után) egy 512 bit többszöröse hosszúságú üzenetet kapunk. Ez egyenértékű azzal, hogy ez az üzenet 16 32 bites szó többszöröse. Minden 32 bites szó négy 8 bites szót tartalmaz, de ezek nem egymás után következnek, hanem fordítva (például nyolc 8 bites szóból (abcdefgh) két 32 bites szót (dcba hgfe) kapunk).
I. Nemlineáris bitenkénti függvények:
II. Hozzáadott hexadecimális állandók:
III. 32 bites szavak kiválasztása üzenetből
VI. Bitforgatás balra beállítása (roll működés)
V. Az összefoglaló szavak kezdeti jelentései
Miután beállította az összes kezdeti függvényt, állandót és a hash összegű szavak kezdeti értékét, folytathatja az algoritmus végrehajtását. Az üzenetfeldolgozás 512 bites blokkokban történik, amelyek 16, egyenként 32 bites szóból állnak (16 * 32 = 512). Minden blokk feldolgozása kétféleképpen történik, és az eredmények bizonyos módon összeadódnak.
Az alábbiakban az algoritmus pszeudokódja látható. A "+" összeadás modulo 2 32 összeadást jelent , a rol s ciklikus eltolódást jelöl balra s pozícióval. Az eredeti üzenet, amely t16 32 bites szóból álló blokkokból áll, a , , [2] tömbben tárolódik . Xi[j]0 <= i < t0 <= j < 16
for i := 0 to (t - 1) { A := h0; B:= h1; C = h2; D := h3; E := h4; A' := h0; B' := h1; C' := h2; D' := h3; E' := h4; j esetén := 0-tól 79-ig { T := rol s(j) (A + f(j; B; C; D) + Xi [ r(j)] + K(j)) + E; A := E; E := D; D: = 10. tekercs (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' := 10. tekercs (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; }A bemeneti karakterlánc ASCII karakterekből áll . A kimeneti karakterlánc hexadecimális jelölés.
RIPEMD-160(" A gyors barna róka átugrik a lusta kutyán ") = 37f332f68db77bd9d7edd4969571ad671cf9dd3bMég egy üzenet kis változtatása is jelentős változást okoz az összefoglalójában . Például a fenti példában a következőre dcseréljük c:
RIPEMD-160 ("A gyors barna róka átugrik a lusta fogaskeréken") = 132072df690933835eb8b6ad0b77e7b6f14acad7Egy üres karakterlánc hash összege így néz ki:
RIPEMD-160("") = 9c1185a5c5e9fc54612808977ee8f548b2258d31Az összehasonlító táblázat az MD4-szerű függvények végrehajtási sebességét mutatja. Feltételezzük, hogy a végrehajtási kód és az adatok a végrehajtó eszköz gyorsítótárában vannak.
Algoritmus | Ciklusok | Mbps | Relatív teljesítmény |
---|---|---|---|
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 függvények | |
---|---|
Általános rendeltetésű | |
Kriptográfia | |
Kulcsgenerálási funkciók | |
Csekkszám ( összehasonlítás ) | |
Hashes |
|