Einzelnen Beitrag anzeigen

fortuneNext

Registriert seit: 11. Aug 2007
Ort: Neuss
133 Beiträge
 
Delphi 7 Enterprise
 
#20

Re: MD5 Länge einfügen als 64 Bit?

  Alt 3. Mär 2009, 22:35
Hey,
danke vielmals

Zitat:
d := c; // dieze Zeile hattest'e vergessen
Manchmal sind die Fehler erstaunlich einfach

Zitat:
Delphi-Quellcode:
    ///for i := 0 to 15 do
    /// //move(block[i * 32 + 1], w, 32);
    /// move(block[i * (32 div 8) + 1], w[i], (32 div 8)); // du willtest doch wohl alles in
    ///oder gleich // die EINZELNEN w[i] reinkoppieren
    move(block[1], w, 512 div 8); // und die 32 waren wohl noch Bits
Ich kannte move vorher nicht ;-D Und in der Hilfe hab ich mich scheinbar einfach verlesen, ich dachte, es kopiert direkt die Bits

Mit deiner Hilfe kam nun das erste Mal der richtige Hash raus

Einen Ansatz zur Lösung der Berechnung des Hashs am Ende hab ich auch schon.

Delphi-Quellcode:
  for i := 1 to length(DecToBin(h0) + DecToBin(h1) + DecToBin(h2) + DecToBin(h3)) div 8 do
    Result := lowerCase(Result + IntToHex(StrToInt(copy(DecToBin(h0) + DecToBin(h1) + DecToBin(h2) + DecToBin(h3), 8 * (i - 1) + 1, 8)), 2));
Kommt nicht das richtige Ergebnis raus.

So ganz hab ichs auch noch nicht mit diesen Endians (evtl. reicht mein informatisches Wissen einfach dafür noch nicht aus). Soweit ich das verstanden habe, muss ich irgendetwas drehen. Der Endhash wird damit sicherlich nicht gemeint sein, doch auch das Drehen des Binärstrings oder der einzelnen 8-Bit-Blöcke hat nicht zum Erfolg geführt.
Was mir weiterhin aufgefallen ist: Bei meinem Ansatz ist das Endergebniss viel zu lang. Jeder Block hat ohnehin 80 Bit (10 zeichen), das ist ja soweit noch richtig. Aber bei deinem bisherigen Ansatz wird es ja bloß um bis zu 24 gedreht und damit kommen auch nur 32 Bit heraus, wodurch sich dann der korrekte 128-Bit-Hash auch erklärt - bei mir kommen jedoch die vollen 80-Bit-Blöcke heraus. Warum ließt du weniger aus den Blöcken aus - davon steht in Wikipedia doch nichts?
Und eine Frage hätte ich noch zu deinem Code:
Zitat:
h0 shr 0 and $ff
Und zwar speziell auf das "and $ff" bezogen. Meiner Logik nach müsste das doch vollkommen sinnfrei sein, oder nicht?

$ff
11111111
and
10010110
10010110

Das verändert doch nichts an den Bits, egal, welche Zeichen man nimmt?
Beim Weglassen kommt jedoch etwas Anderes heraus.

Vielen Dank dass ihr soviel Geduld mit mir habt Ich denke, ich lerne dabei eine ganze Menge

fortuneNext
Tim
"Hilfe & Support konnte nicht geöffnet werden. Bitte öffnen sie Hilfe & Support, um das Problem zu beheben."
"No Keyboard found. Press F1 to continue."
  Mit Zitat antworten Zitat