SHA-1SHA-1 verarbeitet Blöcke der Länge 512 Bits oder 64 Bytes, so dass jede Nachricht durch Auffüllen mit einer 1 und weiteren 0en auf diese Länge gebracht werden muss. Da das erste angehängte Bit auf jeden Fall eine 1 ist und die letzten 64 Bits oder 8 Bytes zur Darstellung der Länge der Originalnachricht verwendet werden, müssen gegebenenfalls sogar mehr als 512 Bits angehängt werden. Die Nachricht wird in n Worten zu 512 Bits zerlegt, die als M0, M1, ..., Mn bezeichnet werden. SHA-1 verwendet zwei Puffer mit jeweils fünf 32 Bit-Worten (als A, B, C, D und H0, H1, H2, H3, H4 bezeichnet) sowie ein Feld mit achtzig 32 Bit-Worten, die als W0, W1, 2, ..., W79 bezeichnet werden. Zu Anfang werden die Hi initialisiert:
Danach werden die M0, M1, ..., Mn bearbeitet. Iterativ wird berechnet:
Nachdem das letzte Wort Mn bearbeitet worden ist, steht der Fingerabdruck in H0, H1, H2, H3, H4. Dabei bedeutet CSLk(X), dass das 32 Bit-Wort X um k Bits zirkulär nach links rotiert wird. ft(X,Y,Z) sind Funktionen, die folgendermaßen definiert sind:
Der Standard gibt einen zweiten Algorithmus an, der den gleichen Wert berechnet jedoch statt achtzig 32 Bit-Worten W0, W1, 2, ..., W79 nur 16 solcher Worte bedarf, dafür aber etwas langsamer ist. |