MD5
MD5 ist eine Einweg-Hashfunktion, die von Ron Rivest entworfen wurde. Es ist die verbesserte Version von MD4. MD steht für Message Digest, was soviel wie Zusammenfassung einer Nachricht bedeutet.
MD5 liefert einen Hashwert (oder Message Digest) der Länge 128Bit. Der Eingabetext wird in Blöcke von 512 Bits verarbeitet und in 16 Blöcke der Länge 32Bit aufgeteilt. Die Ausgabe besteht aus vier 32-Bit-Blöcken, die zusammen einen 128Bit langen Hashwert ergeben.
Die Nachricht wird so aufgeteilt, dass die Länge einem Vielfachen von 512 minus 64Bit entspricht. Aufgefüllt wird die Nachricht mit einer 1 am Ende und so vielen Nullen wie nötig.
Vor dem Auffüllen wird noch eine 64-Bit-Darstellung der Länge angehängt.
Somit haben wir die Länge der Nachricht auf ein Vielfaches von 512Bit gebracht.
Anschliessend werden vier 32Bit Variablen (Verkettungsvariablen) initialisiert:
A = 0*01234567
B = 0*89abcdef
C = 0*fedcba98
D = 0*76543210
Nun beginnt die Hauptschleife, die für alle 512Bit-Blöcke wiederholt wird:
- a = A; b = B; c = C; d = D
- In den folgenden 16 Operationen, von denen jede anders ist, wird mit drei der vier Werte a, b, c, d eine nichtlineare Funktion durchgeführt.
- Das Ergebnis wird zur vierten Variablen, zu einem Teilblock des Texts und einer Konstanten addiert.
- Das Resultat wird um eine variable Anzahl Bits nach rechts rotiert und zu einer der Variablen a, b, c, d addiert.
- Dieses Ergebnis wiederum ersetzt einen der Werte a, b, c, d.

Hauptschleife von MD5

Eine Operation von MD5
Zuletzt werden die Variablen abcd zu ABCD addiert und es beginnt die Verarbeitung des nächsten Blocks.
Die Ausgabe schliesslich, besteht aus einer Zusammensetzung von A, B, C, D.