Norbert Klein: "1" Bit, "0" Bit...

Beitrag lesen

Hallo Alex.

Ohne mich mit dem MD5-Algorithmus auszukennen, werfe ich jetzt einfach mal mit Vermutungen um mich.

a single "1" bit is appended to the message, and then "0" bits are appended so that the length in bits of the padded message becomes congruent to 448, modulo 512
Ok, alles klar... Dachte ich. Denn in allen Umsetzungen des Algorithmus, die ich mir bisher angeschaut habe, wird das erste Bit des Anhängsels nicht auf "1", sondern auf "0x80" gesetzt.

In diesen Beispielen dürfte das erste _Byte_ auf 0x80 gesetzt werden, nicht jedoch das erste _Bit_.

Das entspricht doch einem Dezimalwert von "128" - was weder "1" ist noch in ein einzelnes Bit "paßt", das nur die Zustände "1" oder "0" annehmen kann.

0x80 entspricht tatsächlich einem Dezimalwert von 128, nur ist der an dieser Stelle uninteressant.

Ist mir da irgendwas wesentliches entgangen? Wer kann etwas Licht ins Dunkel bringen?

Wenn in den Beispielen, von denen du gesprochen hast 0x80 angehängt wird, dürfte das nicht daran liegen, dass 0x80 dezimal 128 ist, sondern eher daran, dass der Wert von 0x80 im Binärsystem 10000000 ist.
0x80 benötigt exakt ein Byte an Speicherplatz und in einem Byte stecken ja bekanntlich 8 Bit.
Der Binärwert von 0x80 hat insgesamt 8 Stellen, das sind die 8 Bit (10000000) in dem einen Byte (0x80).
Das Anhängen von einem Byte mit dem Wert 0x80 ist also equivalent zum Anhängen von 8 Bits mit den Werten 1, 0, 0, 0, 0, 0, 0 und 0.
Und bei diesen 8 Bits haben wir dann ein single "1" bit, welches an die Nachricht angehängt wird, sowie die "0" bits, die dafür sorgen, dass das Ganze wieder zu 448%512 kongruent ist.

Gruß
Norbert