![]() |
MD5 Länge einfügen als 64 Bit?
Hallo ;-)
Aktuell probiere ich mal, MD5 in Delphi einzubauen. Da es nicht sonderlich performant sein muss, habe ich mir dazu mal wieder den ![]() Zitat:
2. Evtl. erschließt sich die Antwort schon aus der Antwort zu 1. ansonsten: Soll die Länge als Int64 gespeichert werden? Aber angenommen die Länge beträgt 4 - dann wird eine 4 an den String drangehangen. Aber das eine Zeichen wird doch nicht reichen, aus den 448 Bit 512-Bit zu machen? Wahrscheinlich verstehe ich vollkommen falsch was gemeint ist. Wäre dankbar für ein bischen Hilfe :) mfg fortuneNext |
Re: MD5 Länge einfügen als 64 Bit?
Zitat:
Zitat:
|
Re: MD5 Länge einfügen als 64 Bit?
Liste der Anhänge anzeigen (Anzahl: 1)
Was spricht gegen eine fertige Unit?
Edit: Vielleicht hilft dir ja folgendes weiter...
Delphi-Quellcode:
function ZustandZuBits(Anzahl:integer):integer;
var bits:real; begin bits:=ln(Anzahl) / ln(2); Result:=trunc(bits); if Result < bits then inc(Result); end; |
Re: MD5 Länge einfügen als 64 Bit?
Zitat:
Danke :D Dachte das wäre schwieriger ;) Zitat:
Zitat:
Zitat:
|
Re: MD5 Länge einfügen als 64 Bit?
Gut gut, das mit den Bits und Bytes hab ich nun verstanden und funktioniert :D
Aber wie hänge ich jetzt die Länge als 64-Bit-LE-Int an? |
Re: MD5 Länge einfügen als 64 Bit?
Indem du die Längen-Variable nimmst und binär hinten dranrechnest.
Wie du das genau bei dir machen mußt wissen wir nicht, da wir nicht wissen wie dein Code aussieht. |
Re: MD5 Länge einfügen als 64 Bit?
Wie kommt ihr eigentlich auf 64bit?
Der MD5 braucht 128bit. |
Re: MD5 Länge einfügen als 64 Bit?
64 > Int64 > die Länge der in dem MD5 verechneten Daten.
128 > der MD5-Wert |
Re: MD5 Länge einfügen als 64 Bit?
Zitat:
|
Re: MD5 Länge einfügen als 64 Bit?
Liste der Anhänge anzeigen (Anzahl: 1)
Wie sieht es denn bei dir inzwischen aus? (deine Code-Übersetzung)
hatte es selbst grad mal versucht und dachte erst ":shock: des rechnet doch falsch", verglichen mit einem der PHP-MD5-Generatoren im INet ... Doch hatte ganz vergessen, daß Windows nicht Big-Endian ist, sondern Little-Endian und man daher das Ergebnis umdrehn muß, da die MD5-Strings in Big-Endian ausgegeben werden. IntToHex, sowie Format+%x machen es zumindestens so ... man könnte aber auch BinToHex nutzen, dieses arbeitet "andersrum". (mein Funktions-Rumpf und die Umwandlung von h0-h1-h2-h3 nach String, damit du dich in Ruhe auf die Berechnung konzentrieren kannst und nicht daran scheiterst, nur weil es falsch dargestellt wird)
Delphi-Quellcode:
nicht wundern ... String = AnsiString ... aber damit man es auch unter Delphi2009 testen kann, da dieses Unicode ist.
Function MD5(message: AnsiString): AnsiString;
Begin ... //var int digest := h0 append h1 append h2 append h3 //(Darstellung als little-endian) Result := Format('$%.2x%.2x%.2x%.2x %.2x%.2x%.2x%.2x %.2x%.2x%.2x%.2x %.2x%.2x%.2x%.2x', [h0 shr 0 and $ff, h0 shr 8 and $ff, h0 shr 16 and $ff, h0 shr 24 and $ff, h1 shr 0 and $ff, h1 shr 8 and $ff, h1 shr 16 and $ff, h1 shr 24 and $ff, h2 shr 0 and $ff, h2 shr 8 and $ff, h2 shr 16 and $ff, h2 shr 24 and $ff, h3 shr 0 and $ff, h3 shr 8 and $ff, h3 shr 16 and $ff, h3 shr 24 and $ff]); End; Da du ja lernen willst, würde ich dir allerdings empfehlen es dir erst anzugucken, wenn du es selbst geschafft hast, oder du nicht weiter kommst. Aber bei Letzerem kannst'e uns ja gern fragen ... das Beispiel in Wikipedia geht also schonmal, daran kann's nicht scheitern :angel: [add] Der Code entspricht weitgehenst dem Aufbau von Wiki's Code-Vorlage und enthält keinerlei Optimierungen ... Optimierteres findet man z.B. in meiner "Klasse" ![]() |
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:29 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz