Delphi-PRAXiS
Seite 2 von 4     12 34      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Algorithmen, Datenstrukturen und Klassendesign (https://www.delphipraxis.net/78-algorithmen-datenstrukturen-und-klassendesign/)
-   -   Delphi Sicherheitslücke in MD5-Hash? (https://www.delphipraxis.net/182918-sicherheitsluecke-md5-hash.html)

Neutral General 26. Nov 2014 14:53

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;

himitsu 26. Nov 2014 14:54

AW: Sicherheitslücke in MD5-Hash?
 
Zitat:

Zitat von Neutral General (Beitrag 1281188)
Lad doch mal deine MD5.pas hoch.

Und deinen Code, wie du es verwendest.

Klaus01 26. Nov 2014 14:55

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:
// 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;
das sollte dann wieder funktionieren.
Delphi-Quellcode:
// 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;
Grüße
Klaus

himitsu 26. Nov 2014 14:56

AW: Sicherheitslücke in MD5-Hash?
 
Die Md5.pas ist definitiv nicht Unicoefähig.

gammatester 26. Nov 2014 14:57

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;

humbuck 26. Nov 2014 15:03

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...

humbuck 26. Nov 2014 15:15

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

Uwe Raabe 26. Nov 2014 15:21

AW: Sicherheitslücke in MD5-Hash?
 
Zitat:

Zitat von Neutral General (Beitrag 1281188)
Bin (fast) von einem Troll ausgegangen aufgrund deines Namens

Vielleicht eher ein Gitarrist? Humbucker

humbuck 26. Nov 2014 16:41

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:
MD5Update(Context, PChar(M), Length(M) * sizeOf(Char));
erziehlt das gewünschte Ergebnis.

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.

himitsu 26. Nov 2014 16:48

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 04:09 Uhr.
Seite 2 von 4     12 34      

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