AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

MD5 32 Bit und 64 Bit

Ein Thema von Weeze14 · begonnen am 22. Jun 2014 · letzter Beitrag vom 23. Jun 2014
Antwort Antwort
Seite 2 von 2     12   
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.071 Beiträge
 
Delphi 12 Athens
 
#11

AW: MD5 32 Bit und 64 Bit

  Alt 22. Jun 2014, 10:07
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.
Um wirklich die Funktion eines Hash-Generators zu prüfen muss ich dem Hash-Generator gesichert identische Daten übergeben.
Dieses ist dort also nicht möglich.
  • Entweder man hat von der Gegenseite Vergleichshashs und kann damit arbeiten.
    Also z.B. da wo der eigene Hash letztendlich benutzt wird und von anderen Stelen erstellt/geprüft wird.
    Es gibt bestimmt auch irgendwo Hashs bekannter Test-Daten.
  • Oder man nutzt einen anderen Hash-Code, von dem man weiß, daß er ordentlich arbeitet.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.

Geändert von himitsu (22. Jun 2014 um 10:11 Uhr)
  Mit Zitat antworten Zitat
Weeze14

Registriert seit: 21. Jun 2014
9 Beiträge
 
#12

AW: MD5 32 Bit und 64 Bit

  Alt 22. Jun 2014, 13:42
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:
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;
Die einzige MD5-Implementieren, die ich bisher gesehen habe, die auch den korrekten Hash für eine Datei erzeugt, ist die von Assarbad:
assarbad.net/en/stuff/!export/md5.zip (leider aber nicht mehr lauffähig unter neueren Delphi Versionen)

Geändert von Weeze14 (22. Jun 2014 um 14:11 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.071 Beiträge
 
Delphi 12 Athens
 
#13

AW: MD5 32 Bit und 64 Bit

  Alt 22. Jun 2014, 15:38
MD5 und SHA1 ist im Windows auch schon "fertig" drin.

http://msdn.microsoft.com/en-us/library/cc245827.aspx
http://msdn.microsoft.com/en-us/library/dd240175.aspx
http://msdn.microsoft.com/en-us/library/ee391633.aspx
Implementation siehe FHash.pas in http://www.delphipraxis.net/114342-u...reams-usw.html
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.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
Weeze14

Registriert seit: 21. Jun 2014
9 Beiträge
 
#14

AW: MD5 32 Bit und 64 Bit

  Alt 22. Jun 2014, 18:02
Zitat:
Aber, wie gesagt, eigentlich denk ich mal nicht, daß Indy da einen Fehler hat.
Ich möchte dem Indy-projekt nichts unterstellen, aber ich glaube dennoch, dass der Fehler daher kommt.
Denn andere Bibliotheken, egal ob es eine Windows-Kapselung oder eine eigene Implementierung ist, geben immer die richtigen Ergebnisse zurück.
  Mit Zitat antworten Zitat
Dejan Vu
(Gast)

n/a Beiträge
 
#15

AW: MD5 32 Bit und 64 Bit

  Alt 23. Jun 2014, 07:48
Ich möchte dem Indy-projekt nichts unterstellen, aber ich glaube dennoch, dass der Fehler daher kommt.
Ein neuer Rekordversuch im Selbstwidersprechen? Meiner Meinung nach hat Software nichts mit 'Glaube' zu tun.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:48 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz