Movatterモバイル変換


[0]ホーム

URL:


Naar inhoud springen
Wikipediade vrije encyclopedie
Zoeken

MD5

Uit Wikipedia, de vrije encyclopedie

MD5 (Message Digest Algorithm 5) is een veelgebruiktehashfunctie met een 128 bit-hashwaarde. Hoewel MD5 oorspronkelijk bedoeld was alscryptografischehashfunctie bleken er een hoop fouten in het ontwerp te zitten. MD5 is eerder als internetstandaard[1] gebruikt in vele veiligheidstoepassingen en wordt ook gebruikt om de integriteit vanbestanden te controleren tegen onbedoelde corruptie.MD5 werd doorRonald Rivest in1991 ontworpen om de eerdere hashfunctieMD4 te vervangen. In 1996 werd er een fout in het MD5-ontwerp gevonden; hoewel het geen ernstige fout was, werd het aanbevolen anderealgoritmen zoalsSHA-1 te gebruiken. (hoewel ook deze gelijke fouten bevat).[2]

In 2007 is het een groep wetenschappers gelukt om twaalf verschillendePDF-bestanden met dezelfde hashcode te maken, zogenaamdehash collisions. De auteurs hebben daarmee aangetoond dat MD5 beter niet meer gebruikt kan worden als een verificatiemethode. Op 30 december 2008 gaven zij hiervan een praktijkvoorbeeld door een SSL-autoriteitscertificaat te vervalsen voor demonstratiedoeleinden. In 2012 werd een MD5-collision aanval gebruikt voor het vervalsen van Microsoft-certificaten door deFlame-malware.[3]

Om wachtwoorden die als MD5-hash gecodeerd zijn te "kraken" maakt men vaak gebruik vanrainbow tables.

Pseudocode

[bewerken |brontekst bewerken]

Pseudocode voor het MD5-algoritme volgt.

//Opmerking: Alle variabelen hebben als type een 32-bits integer zonder teken (unsigned) tijdens de berekening
//Definieer r als het volgendevarint[64] r, kr[ 0..15] := {7, 12, 17, 22, 7, 12, 17, 22, 7, 12, 17, 22, 7, 12, 17, 22}r[16..31] := {5,  9, 14, 20, 5,  9, 14, 20, 5,  9, 14, 20, 5,  9, 14, 20}r[32..47] := {4, 11, 16, 23, 4, 11, 16, 23, 4, 11, 16, 23, 4, 11, 16, 23}r[48..63] := {6, 10, 15, 21, 6, 10, 15, 21, 6, 10, 15, 21, 6, 10, 15, 21}
//Use binary fractional part of the sines of integers as constants:for ifrom 0to 63k[i] := floor(abs(sin(i + 1)) × 2^32)
//Initialiseer de variabelen:varint h0 := 0x67452301varint h1 := 0xEFCDAB89varint h2 := 0x98BADCFEvarint h3 := 0x10325476
//Voorbewerking:voeg "1" bit aan het bericht toevoeg "0" bits aan bericht toe totdat berichtlengte in bits ≡ 448 (mod 512)voeg bitlengte van het originele bericht als64-bit little-endian integer toe aan bericht
//Verwerk het bericht in opeenvolgende blokken van 512-bit:for each512-bit chunkof messagebreak chunk into sixteen 32-bit little-endian words w(i), 0 ≤ i ≤ 15
//Initialiseer de hashwaarde voor dit blok:varint a := h0varint b := h1varint c := h2varint d := h3
//Hoofdlus:for ifrom 0to 63if 0 ≤ i ≤ 15thenf := (band c)or ((not b)and d)g := ielse if 16 ≤ i ≤ 31f := (dand b)or ((not d)and c)g := (5×i + 1)mod 16else if 32 ≤ i ≤ 47f := bxor cxor dg := (3×i + 5)mod 16else if 48 ≤ i ≤ 63f := cxor (bor (not d))g := (7×i)mod 16
temp := dd := cc := bb := ((a + f + k(i) + w(g))leftrotate r(i)) + ba := temp
//Tel de hash van dit blok op bij het resultaat tot nog toe:h0 := h0 + ah1 := h1 + bh2 := h2 + ch3 := h3 + d
varint digest := h0append h1append h2append h3 //(uitgedrukt als little-endian)

Opmerking: In plaats van de formulering van de origineleRFC 1321[1] zoals hier getoond kan het volgende gebruikt worden om de efficiëntie te verbeteren:

(0 ≤ i ≤ 15): f := dxor (band (cxor d))(16 ≤ i ≤ 31): f := cxor (dand (bxor c))

MD5-hashes

[bewerken |brontekst bewerken]

De 128 bit-(16 byte-)MD5-hashes worden meestal weergegeven als 32-cijferigehexadecimale getallen. Het volgende laat een 46 bytes-ASCII-invoer en de bijbehorende MD5-hash zien:

MD5("Pa's wijze lynx bezag vroom het fikse aquaduct") =b06c0444f37249a0a8f748d3b823ef2a

Zelfs een kleine verandering in de tekst zal (naar grote waarschijnlijkheid) een compleet andere hash genereren, bijvoorbeeld het vervangen vanP naarM:

MD5("Ma's wijze lynx bezag vroom het fikse aquaduct") =de1c058b9a0d069dc93917eefd61f510

De hash van een legetekenreeks is:

MD5("") =d41d8cd98f00b204e9800998ecf8427e

Zie ook

[bewerken |brontekst bewerken]

Externe link

[bewerken |brontekst bewerken]
  • (en)MD5 Collision Demo, Peter Selinger. Het creëren van verschillende uitvoerbare programma's met dezelfde MD5.
Bronnen, noten en/of referenties
Overgenomen van "https://nl.wikipedia.org/w/index.php?title=MD5&oldid=65718576"
Categorieën:

[8]ページ先頭

©2009-2025 Movatter.jp