![]() |
MD5Print umkehren String zu MD5Digest wandeln
Hallo,
irgendwie stehe ich gerade auf dem Schlauch, ich habe eine MD5 Unit in mein Projekt eingebunden, mit dieser Unit habe ich schon öfter gearbeitet. Jetzt habe ich mit Hilfe der Funktion MD5Print einen MD5Digest in einen String gewandelt um ihn in einem Eingabefeld anzuzeigen. Jetzt würde ich gern diesen String wieder in einen MD5Digest wandeln um ihn per FileStream in einer Datei zuspeichern. Das Speichern ist kein Problem, nur wie bekomme ich meinen String wieder zurück in ein MD5Digest !? :gruebel: Ich hatte gedacht das wäre das normalste der Welt, aber ich konnte bisher nichts finden. Bei String und Integer gehts ja auch, StrToInt & IntToStr aber bei MD5 gibt es nur die eine Richtung. mfg TUX |
AW: MD5Print umkehren String zu MD5Digest wandeln
Der MD5 String ist ja nur die Hex-Darstellung der vier 32bit Werte.
|
AW: MD5Print umkehren String zu MD5Digest wandeln
Kuckst du
![]() |
AW: MD5Print umkehren String zu MD5Digest wandeln
Vielen dank euch beiden, jetzt steh ich nicht mehr auf dem Schlauch :-D
Habe das auf jetzt wie folgt gelöst.
Delphi-Quellcode:
type
MD5Digest: array[0..15] of byte; function MD5Read(S: String): MD5Digest; var i: Byte; c: Byte; function BaseToInt( const Value : string; const Base : Integer ) : Int64; var idx : Integer; pdx : Integer; begin if ( Base >= 2 ) and ( Base <= 36 ) then begin Result := 0; idx := 1; while idx <= Length( Value ) do begin Result := Result * Base; case Value[ idx ] of '0' .. '9' : pdx := Ord( Value[ idx ] ) - Ord( '0' ); 'A' .. 'Z' : pdx := Ord( Value[ idx ] ) - Ord( 'A' ) + 10; 'a' .. 'z' : pdx := Ord( Value[ idx ] ) - Ord( 'a' ) + 10; else raise Exception.CreateFmt( 'Ungültiges Zeichen im Wert "%s" entdeckt!', [ Value ] ); end; if pdx < Base then Result := Result + pdx else raise Exception.CreateFmt( 'Der Wert "%s" passt nicht zur Basis %d!', [ Value, Base ] ); idx := idx + 1; end; end else raise Exception.CreateFmt( 'Basis %d ausserhalb des gülitigen Bereichs 2..36', [ Base ] ); end; begin c := 1; for i := 0 to 15 do begin result[i] := BaseToInt(Copy(S, c, 2), 16); Inc(c, 2); end; end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 15: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-2025 by Thomas Breitkreuz