md5-algo probleme



  • Abend,

    ich sitze gerade vor dem MD5-Algo und hab da meine Schwierigkeiten diesen wirklich zu verstehen.

    http://tools.ietf.org/html/rfc1321

    Vor allem mit der Funktion MD5Update - da happerts richtig...

    Was stellt genau "context->count[0]" und "context->count[1]" dar? Welche Position beschreibt Index genau?

    Und warum steht in dieser Zeile 29?

    context->count[1] += ((UINT4)inputLen >> 29);
    

    vielen dank für eure hilfe
    jögi



  • count zählt die Anzahl der Bits der Nachricht (diese Information ist für das finale Padding nötig). Davon sind für den Algorithmus 64 Bit relevant, die Implementation geht aber nur von 32-Bit-Integern aus, und teilt count daher in 2 solche Integer auf (count[0] enthält die niederwertigen Bits).



  • camper schrieb:

    count zählt die Anzahl der Bits der Nachricht (diese Information ist für das finale Padding nötig). Davon sind für den Algorithmus 64 Bit relevant, die Implementation geht aber nur von 32-Bit-Integern aus, und teilt count daher in 2 solche Integer auf (count[0] enthält die niederwertigen Bits).

    vielen dank, das hat schon einiges geklärt... aber die 29 hab ich noch nicht ganz begriffen, da 29 nicht durch vier geteilt werden kann. Ich dachte jetzt, dass durch die 29 einfach die unteren Stellen der Daten sozusagen rausgeschmissen werden, da in Count[1] nur die oberen 32bits gespeichert werden;

    Jögi



  • eine sache hat sich noch grad ergeben, die mir noch nicht ganz klar ist:

    am schluss wenn man alle informationen hinzugefügt hat wird die anzahl der padding-bits berechnet und entsprechend hinzugefügt. Bevor man das jedoch macht, speichert man sich die ersten 8bits von den informationen ab und und fügt diese dann noch einmal dazu / bzw. als update

    /* Append length (before padding) */
      MD5Update (context, bits, 8);
    

    das ist mit noch etwas unklar...

    jögi



  • Das Längenargument von MD5Update zählt in Bytes (8 Bit/Byte), count zählt in Bits - daher die 29 ( 32 - 3 )

    /* Append length (before padding) */
      MD5Update (context, bits, 8);
    

    Lies dir noch einmal 3.1 und 3.2 durch.



  • camper schrieb:

    Das Längenargument von MD5Update zählt in Bytes (8 Bit/Byte), count zählt in Bits - daher die 29 ( 32 - 3 )

    /* Append length (before padding) */
      MD5Update (context, bits, 8);
    

    Lies dir noch einmal 3.1 und 3.2 durch.

    da steh ich leider grad irgendwie auf der leitung... das die längenangabe (funktionsparameter von MD5Update) in Bytes und Count in Bits gezählt wird - ok, aber die Rechnung 32-3 hab ich leider noch nicht umrissen...

    die bieden Abschnitte 3.1 und 3.2 hab ich mehr mehrmals durchgelesen - noch kein erleuchtendes ereignis....

    jögi


Anmelden zum Antworten