![]() |
AW: Sicherheitslücke in MD5-Hash?
Die MD5.pas von dir unterscheidet sich zwar stark von meiner MD5.pas aber beide erzeugen die gleichen unterschiedlichen Hashs für meine Teststrings:
Delphi-Quellcode:
procedure TForm3.FormCreate(Sender: TObject);
begin Edit1.Text := MD5_humbuck.MD5Print(MD5_humbuck.MD5String('12345_test123')); Edit2.Text := MD5_humbuck.MD5Print(MD5_humbuck.MD5String('12345_blabla5')); Edit3.Text := MD5.MD5DigestToStr(MD5.MD5String('12345_test123')); Edit4.Text := MD5.MD5DigestToStr(MD5.MD5String('12345_blabla5')); end; |
AW: Sicherheitslücke in MD5-Hash?
Zitat:
|
AW: Sicherheitslücke in MD5-Hash?
In XE4 ist ein String ein UniCodeString.
Ein Char ein UniCodeChar - damit 2 Byte lang. Das dürfte hier zu einem Problem führen (md5.pas):
Delphi-Quellcode:
das sollte dann wieder funktionieren.
// Create digest of given Message
function MD5String(M: string): MD5Digest; var Context: MD5Context; begin MD5Init(Context); MD5Update(Context, PChar(M), Length(M)); MD5Final(Context, Result); end;
Delphi-Quellcode:
Grüße
// Create digest of given Message
function MD5String(M: string): MD5Digest; var Context: MD5Context; begin MD5Init(Context); MD5Update(Context, PChar(M), Length(M) * sizeOf(Char)); MD5Final(Context, Result); end; Klaus |
AW: Sicherheitslücke in MD5-Hash?
Die Md5.pas ist definitiv nicht Unicoefähig.
|
AW: Sicherheitslücke in MD5-Hash?
Beide MD5 brauchen $Q-, bei der einen ist es schon eingebaut. Wahrscheinlich frönst Du der Unart, Strings zu hashen. Dieser Teil ist nicht Unicode-String kompatibel.
Delphi-Quellcode:
function MD5String(M: string): MD5Digest;
var Context: MD5Context; begin MD5Init(Context); MD5Update(Context, PChar(M), Length(M)); MD5Final(Context, Result); end; |
AW: Sicherheitslücke in MD5-Hash?
Das könntes es sein...
Tja, lieber Neutral General, mit den von dir verwendeten Strings erhalte ich ebenfalls unterschiedliche Hashes... Hier mein Code zur Umsetzung: type TBenutzer = record User : string[50]; Rechte : Packed Array[0..29] OF Boolean; Aktiv : Boolean; Passwort: string[50]; HashCode: String[32]; end; Var User: TBenutzer; procedure TPasswordDlg.Button1Click(Sender: TObject); Var Text :String; I : Integer; begin Text := ''; for I := 0 to Memo2.Lines.Count do begin Text := Text + Memo2.Lines.Strings[I]; end; Label4.Caption := Text; Memo2.Lines.Clear; Edit1.Text := MD5DigestToStr(MD5String(Text)); User.HashCode := MD5DigestToStr(MD5String(Text)); end; Die Eingaben erfolgten jedoch immer nur in der ersten Zeile des Memofeldes... ohne Return... |
AW: Sicherheitslücke in MD5-Hash?
Ich werde die Dateien wohl entsprechend anpassen müssen. (Komme ich heute wohl nicht mehr zu...)
Wenn ich zu einem Ergebnis gekommen bin, werde ich es hier posten. Zunächst erstmal vielen Dank für alle Vorschläge. Bis denne... Humbuck |
AW: Sicherheitslücke in MD5-Hash?
Zitat:
![]() |
AW: Sicherheitslücke in MD5-Hash?
So, ich habe die MD5 Datei (MD5.pas) modifiziert, wie von Klaus01 vorgeschlagen und... es funzt. Vielen Dank.
Ich hatte nicht berücksichtigt, dass in XE4 ein String ein UniCodeString ist. Die Änderung in:
Delphi-Quellcode:
erziehlt das gewünschte Ergebnis.
MD5Update(Context, PChar(M), Length(M) * sizeOf(Char));
Vielen Dank. (Natürlich an alle...) P.S: Vielleicht noch an alle, die im guten Glauben sind, ihre MD5.pas arbeitet einwandfrei... JETZT testen, falls ihr den selben Fehler beim Einsatz der MD5.pas (...auch die DelphiMD5.pas), wie ich gemacht habt, ungeprüft von einer alten Delphi Version auf eine neuere zu wechseln. |
AW: Sicherheitslücke in MD5-Hash?
Es gibt von vielen md5.pas eben auch neuere Versionen, welche man beim Upgrade der Delphi-Version natürlich auch mit aktualisieren sollte. :stupid:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:24 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