![]() |
AW: MD5 32 Bit und 64 Bit
Nur um das mal zu erklären (falls wirklich ein Fehler im Hash-Code ist):
Viele MD5-Codes arbeiten absichtlich mit Integerüberläufen, um sich das manuelle Kürzen zu sparen, aber dafür müssen in dem Code die Typen und Ähnliches auch genau stimmen. Aber ich würde schon stark davon ausgehn, daß soein Fehler im Indy in den letzten 2 Jahren aufgefallen wäre und behoben wurde. Gerade bei solchen schrottigen Testwebseiten kann man eigentlich fast nur von ASCII halbwegs sicher ausgehn, daß es "wie gewollt" funktioniert, da sich beim Rest kein Encoding angeben lässt und auch nirgendwo verraten wird, womit das Ding rechnet. Zitat:
|
AW: MD5 32 Bit und 64 Bit
Ich glaube ich werde das niemals hinbekommen ;) (Danke Sir Rufo, deine Schläge auf den Hinterkopf haben geholfen). Einen String hashen, funktioniert nun sowohl mit 32-, als auch mit 64-Bit und die Resultate sind identisch.
Jedoch will das Erzeugen eines Hashs für eine Datei noch immer nicht (unterschiedliche resultate 32-Bit <> 64-bit):
Delphi-Quellcode:
Die einzige MD5-Implementieren, die ich bisher gesehen habe, die auch den korrekten Hash für eine Datei erzeugt, ist die von Assarbad:
function MD5File(const s: string): string;
var MD5: TIdHashMessageDigest5; fs: TFileStream; begin Result:=''; if FileExists(s) then begin MD5 := TIdHashMessageDigest5.Create; fs := TFileStream.Create(s, fmOpenRead or fmShareDenyWrite); try Result := MD5.HashStreamAsHex(fs); finally fs.Free; MD5.Free; end; end; end; assarbad.net/en/stuff/!export/md5.zip (leider aber nicht mehr lauffähig unter neueren Delphi Versionen) |
AW: MD5 32 Bit und 64 Bit
MD5 und SHA1 ist im Windows auch schon "fertig" drin.
![]() ![]() ![]() Implementation siehe FHash.pas in ![]() Kannst es dir dort problemlos rauskopieren (eventuell noch ein zwei Typen anpassen, bzw. aus der FType.pas rauskopieren). Für die Verwendung siehe ThMD5 (FHash.pas). Aber, wie gesagt, eigentlich denk ich mal nicht, daß Indy da einen Fehler hat. Notfalls kann man aber Indy auch durch eine aktuellere Version ersetzen. Irgendwo hier im Forum verstecken sich aber auch noch direkte Implementierungen, ohne externe APIs/Komponenten, für DM5 von anderen Unsern und auch mir. Ich glaub von mir verstecken sich hier irgendwo ebenfalls MD5-Implementationen, die teilweise und komplett in Assembler geschrieben waren, aber persönlich hab ich mich inzwischen nahezu komplett von ASM-Codes verabschiedet. |
AW: MD5 32 Bit und 64 Bit
Zitat:
Denn andere Bibliotheken, egal ob es eine Windows-Kapselung oder eine eigene Implementierung ist, geben immer die richtigen Ergebnisse zurück. |
AW: MD5 32 Bit und 64 Bit
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:42 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 by Thomas Breitkreuz