Wat is HASH? Uitleg!

  • Gast
  • Onderwerp Auteur
  • Gebruiker
  • Gebruiker
Meer
17 jan 2009 10:50 #4924 door Gast
Wat is HASH? Uitleg! werd gestart door Gast
Naar aanleiding van een bericht van Groenteman over het Hash bestand plaats ik hier even de uitleg ervoor, wat is het, wat doet het.

Wat is Hash

Digitale hash is ontwikkeld om een bericht (er wordt in dit verband gesproken van een bericht en niet van een bestand, analoog aan het Engelse message) met een willekeurige lengte te kunnen comprimeren tot een datablok met een vaste lengte. Zo'n datablok wordt een hashwaarde of Message Digest (MD) genoemd.

Hash is eenrichtingsverkeer, wat inhoudt dat het onmogelijk is om vanuit de hashwaarde het originele bericht weer te genereren. In tegenstelling tot encryptiemethoden is er bij hash geen sleutel nodig om de hashwaarde te kunnen berekenen.


Voordat een MD5 hashwaarde over een bericht kan worden berekend wordt het blok opgevuld met bits, zodat de lengte van het bestand 64 bytes minder is dan een veelvoud van 512. De reeks met opvulbits begint met een 1 en wordt gevolgd door allemaal nullen. Dit opvullen wordt 'padding' genoemd.
Bijvoorbeeld, een bericht is 954 bits. Het moet worden opgevuld met 6 bits, wil het ene veelvoud worden van 512. Het bericht zal dus moeten worden aangevuld met 100000.


Aan het datablok dat nu is verkregen wordt een 64 bits representatie van de lengte van het bericht toegevoegd (hiermee wordt de lengte van het bericht bedoeld, voordat het door middel van padding werd aangevuld).
Het eindresultaat wordt opgedeeld in blokken van 512 bits. De uiteindelijke lengte van het bericht is een geheel veelvoud van 512 bits.
Er wordt nu een 128 bits buffer, bestaande uit vier 32-bits registers (A, B, C en D) gebruikt om de tussen- en eindresultaten van de hashfunctie te bewaren. De vier registers worden geinitialiseerd op de volgende hexadecimale waarden:
A: 01 23 45 67
B: 89 ab cd ef
C: fe dc ba 98
D: 76 54 32 10


Ofwel de gehele hexadecimale reeks 'van onder naar boven' en terug.
De invoer voor de eerste 'MD box' is de 128 bits buffer en het allereerste berichtblok van 512 bits.


Het hart van het algoritme is een compressiefunctie die uit vier 'verwerkingsronden' bestaat. De uitvoer van een MD5 - box heeft een lengte van 128 bits. Deze uitvoer dient samen met het volgende blok van 512 bits als invoer voor de volgende MD5 box.


Dit gaat net zo lang door totdat het gehele bericht is afgehandeld. Het resultaat is een 128 bits Message Digest.


De 128 bits (16 bytes) MD5 hashes worden meestal weergegeven als een reeks van 32 hexadecimale karakters (0 t/m 9, A t/m F). Het volgende voorbeeld toont een ASCII invoer van 46 bytes en de bijbehorende MD5 hash:
MD5("Pa's wijze lynx bezag vroom het fikse aquaduct") = b06c0444f37249a0a8f748d3b823ef2a
Zelfs de meest kleine verandering in de tekst zal een compleet andere hashwaarde ten gevolg hebben, bijvoorbeeld na het vervangen van de P in de M:
MD5("Ma's wijze lynx bezag vroom het fikse aquaduct") = de1c058b9a0d069dc93917eefd61f510

Secure Hash Algoritm (SHA)
Het Amerikaanse NIST (National Institute of Standards and Technology) heeft het Secure Hash Algoritm (SHA) ontwikkeld. SHA is gebaseerd op MD4 (een voorloper van MD5) en produceert een 160 bits Message Digest (SHA256 produceert een 256 bits Message Digest), wat uiteraard sterker in elkaar zit dan de 128 bits die MD5 produceert.
Discussie gesloten.
  • Gast
  • Onderwerp Auteur
  • Gebruiker
  • Gebruiker
Meer
17 jan 2009 10:50 #4925 door Gast
Beantwoord door Gast in topic Wat is HASH? Uitleg!
Mooie uitleg,

Wel even erbij zetten dat de auteur M.Stam is en het gecopieerd is en niet het hele verhaal
compleet is om het duidelijk te maken.

gr.
Discussie gesloten.
Gemaakt door Kunena