AGB  ·  Datenschutz  ·  Impressum  







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

MD5 Hash Verständnis Problem

Ein Thema von Astartes · begonnen am 30. Okt 2007 · letzter Beitrag vom 31. Okt 2007
Antwort Antwort
Astartes
(Gast)

n/a Beiträge
 
#1

MD5 Hash Verständnis Problem

  Alt 30. Okt 2007, 09:12
Hi,

Ich bräuchte mal Hilfe zum Thema MD5 Verschlüsselung!

1. Warum sind die Ergebnisse unterschiedlich bei dem folgenden Code ? (Siehe projekt.exe)
2. Warum ändert sich der Hashwert bei 3 nicht, wenn ich lNew noch vor der Label1.Caption Zuweisung setze ?
3. Warum ändert sich der Hashwert bei 3, wenn ich lNew vor der Label3.Caption Zuweisung setze ?

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
  var
  lNew,lNew2 : String;
begin
{
    Function MD5Hash(APWD: String): String;
    Begin
      With THash_MD5.Create Do
      Try
        Init;
        Calc(APwd, Length(APwd));
        Done;

        Result := DigestStr(TFormat_HEX);
      Finally
        Free;
      End;
    End;
}


  lNew := Edit1.Text;

  {1}Label1 .Caption := ' = ' + MD5_HASH.MD5Hash(Edit1.Text);
  {2}Label2 .Caption := ' = ' + MD5_HASH.MD5Hash('ms');


  // lNew := Edit1.Text; setze ich lNew hier kommt auch immer ein anderer Hashwert raus bei 3
  {3}Label3 .Caption := ' = ' + MD5_HASH.MD5Hash(lNew);
  {4}Label4 .Caption := ' = ' + MD5_HASH.MD5Hash(PChar('ms'));
  {5}Label9 .Caption := ' = ' + MD5_HASH.MD5Hash(PChar(Edit1.Text));


  {6}lNew2 := Edit1.Text;
  Label13.Caption := ' = ' + MD5_HASH.MD5Hash(lNew2);


  {7}lNew2 := PChar('ms');
  Label11.Caption := ' = ' + MD5_HASH.MD5Hash(lNew2);

end;
Nachträglich eingefügt: Wenn ich von MD5 Verschlüsselung spreche meine ich MD5 Hash!

Mit freundlichen Grüßen Tom

[edit=Phoenix]Titel auf Anfrage des Autors geändert. Mfg, Phoenix[/edit]
Angehängte Dateien
Dateityp: zip test_853.zip (262,1 KB, 9x aufgerufen)
Dateityp: zip project___source_257.zip (1,71 MB, 16x aufgerufen)
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.862 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: MD5 Verschlüsselung Verstandnis Problem

  Alt 30. Okt 2007, 09:19
MD5 ist keine Verschlüsselung sondern ein Hash-Verfahren
Und dein Programm konnte ich nicht starten, weil es eine FastMM-Dll anmahnt.
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von Phoenix
Phoenix
(Moderator)

Registriert seit: 25. Jun 2002
Ort: Hausach
7.641 Beiträge
 
#3

Re: MD5 Verschlüsselung Verstandnis Problem

  Alt 30. Okt 2007, 09:20
Zitat von Fehlermeldung:
Die Anwendung konnte nicht gestartet werden, weil FastMM_FullDebugMode.dll nicht gefunden wurde...
Sebastian Gingter
Phoenix - 不死鳥, Microsoft MVP, Rettungshundeführer
Über mich: Sebastian Gingter @ Thinktecture Mein Blog: https://gingter.org
  Mit Zitat antworten Zitat
Astartes
(Gast)

n/a Beiträge
 
#4

Re: MD5 Verschlüsselung Verstandnis Problem

  Alt 30. Okt 2007, 09:31
Das mit der Verschlüsselung ist ein Tippfehler ! Und ich hoffe die EXE funktioniert jetzt Sorry hat ich nicht getestet !
  Mit Zitat antworten Zitat
Benutzerbild von negaH
negaH

Registriert seit: 25. Jun 2003
Ort: Thüringen
2.950 Beiträge
 
#5

Re: MD5 Hash Verständnis Problem

  Alt 31. Okt 2007, 03:45
Zitat:
Delphi-Quellcode:
 
 Function MD5Hash(APWD: String): String;
    Begin
      With THash_MD5.Create Do
      Try
        Init;
        Calc(APwd, Length(APwd));
        Done;

        Result := DigestStr(TFormat_HEX);
      Finally
        Free;
      End;
    End;
Entweder bseitigst du den Fehler aus obigem Source oder benutzt gleich

Result := THash_MD5.CalcBinary(APWD, TFOrmat_HEX); Der Fehler im obigen source ist

Delphi-Quellcode:
Calc(APwd[1], Length(APwd));

// oder

Calc(PChar(APwnd)^, Length(APwnd)); // TypCast LongString nach PChar mit anschließnder Dereferenzierung des zeigers
APwd -> Type LongString und damit ein Pointer auf eine interne PLongStringRec Datenstruktur und nicht dem eigentlichen String.

MD5 als Hash funktion kann in sogenannten MDC -> Message Digest Cipher auch als Verschlüsselung benutzt werden, auch wenn ich das persönlich für ein schlechtes Vorgehen erachte. Man kann also mit MD5 auch Daten verschlüsseln, damit ist dieses Verfahren dann auch eine Verschlüsselungsfunktion.


Ach und nochwas. Deine Art ein Passwort in einen Sessionkey umzuwandlen bzw. es zu schützen ist unsicher. Es lassen sich auf diese Weise zb. Brute Force Angriffe per Rainbow Tabellen anwenden. Besser ist es so

Delphi-Quellcode:
function HashPassword(const Password: String; const HashClass: TDECHashClass = THash_MD5): String;
var
  Salt: Binary;
begin
  Salt := RandomBinary(16);
  Result := TFormat_HEX.Encode(Salt) + ValidHash(HashClass).KDFx(Password, Salt, 16, TFormat_HEX);
end;
Wir erzeugen einen Zufallswert, 16 Bytes lang, und hashen diesen per KDF -> Key Derivation Function -> Schlüsselableitungfunktion auf sichere Weise. So entsteht ein 32 Bytes langer Wert der in den ersten 16 Bytes den Salt speichert und in den zweiten 16 bytes den Output der KDF zum Salt + Password.
Wollte man nun per Rainbow Tabellen auf ein so umgewandeltes Passwort eine Brute Force Attacke durchführen, also ein Wörterbuch benutzen, so benötigte man bei 16 Bytes langen Keys nicht mehr nur 2^128 Einträge pro Dictionary sondern 2^128 * 2^128. Also für jedes einzelne Password müsste man eine eigene Rainbow Tabelle erzeugen.

Gruß Hagen
  Mit Zitat antworten Zitat
Astartes
(Gast)

n/a Beiträge
 
#6

Re: MD5 Hash Verständnis Problem

  Alt 31. Okt 2007, 11:46
@negaH Danke für die Erklärung!

Mit freundlichen Gruß Tom
  Mit Zitat antworten Zitat
Muetze1
(Gast)

n/a Beiträge
 
#7

Re: MD5 Hash Verständnis Problem

  Alt 31. Okt 2007, 14:48
Na toll. Ich ging bisher immer davon aus, dass Calc() einen String als ersten Parameter hat und nicht einen unspezifischen Daten-Pointer. Nicht denken, wissen Muetze1!

@Astartes: War der Code nicht von einem Beispiel? Woher kam die Routine?
  Mit Zitat antworten Zitat
Astartes
(Gast)

n/a Beiträge
 
#8

Re: MD5 Hash Verständnis Problem

  Alt 31. Okt 2007, 16:34
Ja, der Code stammte aus dem Delphipraxisforum. hier

Sehe grad das ich beim Abschreiben einen Fehler gemacht habe !

Mit freundlichen Gruß Tom
  Mit Zitat antworten Zitat
Antwort Antwort


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 08:14 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