Bekanntes Problem MD5 und Unicode
spacer
Autor Nachricht
Cyberaxx
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 89



BeitragVerfasst: Mi 21.12.11 00:37 
Hallo

Mittlerweile bin ich seit einer ganzen weile am Suchen, hier, DP, Google aber wirklich fündig bin ich nicht geworden.

Ich suche eine funktionierende Version um einen MD5 Hash zu erzeugen unter Delphi 2010 und das ohne eine ganze Tool Sammlung zu installieren.

Sämtliche Anpassungen an den bekannten MP5.pas sind leider fehlgeschlagen sie stimmen einfach nicht mit der von MYSQL überein.

Hat hier vllt. jemand eine Lösung ohne eben eine ganze Sammlung zu installieren?

MfG Cyber

_________________
Das Aufwachen aus einem boesen Traum muss einen nicht erleichtern. Es kann einen auch erst richtig gewahr werden lassen, was man Furchtbares getraeumt hat, vielleicht sogar welcher furchtbaren Wahrheit man im Traum begegnet ist!
 
Antworten mit Zitat Beitrag melden
Private Nachricht sendenPosting in privater Nachricht zitieren
Werbung ausblenden? Dann registriere Dich kostenlos. Weitere Gründe für eine Registrierung.


Werbung ausblenden? Dann registriere Dich kostenlos. Weitere Gründe für eine Registrierung.
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 15833
Erhaltene Danke: 737

XP, W7 x64 (Chrome, IE9, FF), Debian, (OSX 10.7)
RAD XE 2, Java (NB), C++, C# (VS 2010), JS/HTML, PHP, Lazarus
BeitragVerfasst: Mi 21.12.11 00:49 
Wie wäre es mit Indy (TIdHashMessageDigest5 aus IdHashMessageDigest)? Das ist schließlich schon mit Delphi mitgeliefert und sollte daher am einfachsten sein. ;-)
 
Antworten mit Zitat Beitrag melden
Private Nachricht sendenPosting in privater Nachricht zitieren
Cyberaxx Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 89



BeitragVerfasst: Mi 21.12.11 08:38 
In all den Stunden die ich gesucht habe, ist niemand auf die Idee gekommen an gegebenfalls mal an die Indies zu denken.
Es kam mal auf das ich glaube etwas von Fundamentals glaube ich. So viel wollte ich natürlich nicht installieren.

Die md5.pas war halt recht einfach gehalten.

Ich werde mir nachher mal die Unit von den Indies anschauen. Danke erstmal.

_________________
Das Aufwachen aus einem boesen Traum muss einen nicht erleichtern. Es kann einen auch erst richtig gewahr werden lassen, was man Furchtbares getraeumt hat, vielleicht sogar welcher furchtbaren Wahrheit man im Traum begegnet ist!
 
Antworten mit Zitat Beitrag melden
Private Nachricht sendenPosting in privater Nachricht zitieren
Gausi
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Moderator
Beiträge: 8117
Erhaltene Danke: 250

Win XP, Win 7
D7 PE, RAD Studio 2009 Professional
BeitragVerfasst: Mi 21.12.11 08:55 
Die Unit, die ich dafür mal hier im Forum gefunden habe, führte sämtliche Berechnungen auf eine Funktion zurück, die als Parameter nur einen Pointer und eine Länge erwartet hat. Diese Unit konnte man dann einfach so Unicodefähig machen:

ausblenden Delphi-Quelltext markieren
1:
2:
3:
4:
function MD5UnicodeString(const S: UnicodeString): TMD5Digest;
begin
Result := MD5Buffer(PWideChar(S)^, Length(S) * sizeOf(WideChar));
end;


Und wenn das nicht mit dem Hash von MYSQL übereinstimmt, dann könnte man sowas probieren:

ausblenden Delphi-Quelltext markieren
1:
2:
3:
4:
function MD5UTF8String(const S: UTF8String): TMD5Digest;
begin
Result := MD5Buffer(PAnsiChar(S)^, Length(S));
end;

_________________
Oel ngati kameie.
 
Antworten mit Zitat Beitrag melden
Private Nachricht sendenPosting in privater Nachricht zitieren
Cyberaxx Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 89



BeitragVerfasst: Mi 21.12.11 09:13 
:)

Hast denn die Unit noch? Sitze gerade auf der Arbeit und habe kein Delphi vor mir.
Habe halt bei meiner auch schon einiges versucht anzupassen nachdem was ich so gelesen hatte.
Letzteres war dann, das ich eine andere md5.pas genommen habe aber die schon beim kompilieren Probleme machte.

_________________
Das Aufwachen aus einem boesen Traum muss einen nicht erleichtern. Es kann einen auch erst richtig gewahr werden lassen, was man Furchtbares getraeumt hat, vielleicht sogar welcher furchtbaren Wahrheit man im Traum begegnet ist!
 
Antworten mit Zitat Beitrag melden
Private Nachricht sendenPosting in privater Nachricht zitieren
Gausi
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Moderator
Beiträge: 8117
Erhaltene Danke: 250

Win XP, Win 7
D7 PE, RAD Studio 2009 Professional
BeitragVerfasst: Mi 21.12.11 11:03 
Wo ich die genau gefunden habe, weiß ich nicht mehr, und die Seite, die im Quellcode vermerkt ist, gibt es nicht mehr. Die ist aber im Anhang in diesem Topic dabei. Da habe ich die iirc um die UTF8-Variante erweitert.

_________________
Oel ngati kameie.
 
Antworten mit Zitat Beitrag melden
Private Nachricht sendenPosting in privater Nachricht zitieren
Cyberaxx Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 89



BeitragVerfasst: Mi 21.12.11 20:18 
Es funktioniert :)

Warum ist der MD5 String eigentlich uppercase? Ich mein wenn ich mir dagegen die MD5 von MySQL anschaue ist dort alles Lowercase

_________________
Das Aufwachen aus einem boesen Traum muss einen nicht erleichtern. Es kann einen auch erst richtig gewahr werden lassen, was man Furchtbares getraeumt hat, vielleicht sogar welcher furchtbaren Wahrheit man im Traum begegnet ist!
 
Antworten mit Zitat Beitrag melden
Private Nachricht sendenPosting in privater Nachricht zitieren
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 15833
Erhaltene Danke: 737

XP, W7 x64 (Chrome, IE9, FF), Debian, (OSX 10.7)
RAD XE 2, Java (NB), C++, C# (VS 2010), JS/HTML, PHP, Lazarus
BeitragVerfasst: Mi 21.12.11 21:31 
Das ist vollkommen egal, da es sich um hexadezimale Ziffern handelt. ;-)
 
Antworten mit Zitat Beitrag melden
Private Nachricht sendenPosting in privater Nachricht zitieren
Cyberaxx Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 89



BeitragVerfasst: Mi 21.12.11 21:35 
Ja und Nein

Wenn ich
ausblenden Delphi-Quelltext markieren
1:
2:
3:
4:
5:
Format('SELECT * FROM users WHERE username = %s', [UserName]);
...
if MD5String(Passwort) = DataSource.DataSet.FieldByName('password').AsString then begin
...
end;


versuche gehts natürlich in die Hose. Auch wen ndas nun kein schönes Beispiel ist, so ist es ja nunmal so.
Hab nun einfach nen lowerCase davor gesetzt und meine Welt ist wieder in Ordnung :)

_________________
Das Aufwachen aus einem boesen Traum muss einen nicht erleichtern. Es kann einen auch erst richtig gewahr werden lassen, was man Furchtbares getraeumt hat, vielleicht sogar welcher furchtbaren Wahrheit man im Traum begegnet ist!
 
Antworten mit Zitat Beitrag melden
Private Nachricht sendenPosting in privater Nachricht zitieren
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 15833
Erhaltene Danke: 737

XP, W7 x64 (Chrome, IE9, FF), Debian, (OSX 10.7)
RAD XE 2, Java (NB), C++, C# (VS 2010), JS/HTML, PHP, Lazarus
BeitragVerfasst: Do 22.12.11 00:05 
Wie wäre es zum Vergleich mit AnsiSameText? :zwinker:
 
Antworten mit Zitat Beitrag melden
Private Nachricht sendenPosting in privater Nachricht zitieren
Cyberaxx Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 89



BeitragVerfasst: Do 22.12.11 18:40 
Da gefällt mir LowerCase aber doch schon besser :)

ausblenden Delphi-Quelltext markieren
1:
AnsiSameText(Str1, Str2) =


<>

ausblenden Delphi-Quelltext markieren
1:
str1 = str2

_________________
Das Aufwachen aus einem boesen Traum muss einen nicht erleichtern. Es kann einen auch erst richtig gewahr werden lassen, was man Furchtbares getraeumt hat, vielleicht sogar welcher furchtbaren Wahrheit man im Traum begegnet ist!
 
Antworten mit Zitat Beitrag melden
Private Nachricht sendenPosting in privater Nachricht zitieren
Boldar
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starhalf offtopic starofftopic starofftopic star
Beiträge: 1420
Erhaltene Danke: 46

Win7 Enterprise 64bit, Win XP SP2
Turbo Delphi
BeitragVerfasst: Fr 23.12.11 02:21 
user profile iconCyberaxx hat folgendes geschrieben Zum zitierten Posting springen:


ausblenden Delphi-Quelltext markieren
1:
AnsiSameText(Str1, Str2) =


<>

ausblenden Delphi-Quelltext markieren
1:
str1 = str2


Hat ja auch niemand behauptet... :gruebel:
 
Antworten mit Zitat Beitrag melden
Private Nachricht sendenPosting in privater Nachricht zitieren
home home