Wie bekomme ich das gleiche MD5 mit Delphi und PHP?

8

Ich verwende Delphi XE2 mit FireMonkey.

Ich habe viele andere Fragen zu MD5 gelesen, aber ich habe keine Antwort auf das Problem gefunden, das ich habe ... Ich habe auch verschiedene Skripte getestet, um aus Delphi ein MD5 zu generieren:

%Vor%

oder

%Vor%

Beide geben mir die gleichen Ergebnisse ... was oft ist, das ich auch in PHP habe:

%Vor%

Aber die Ergebnisse sind anders, wenn ich Delphi oder PHP benutze, wenn ich das MD5 eines dieser Zeichen anfordere: " oder ' Es gibt vielleicht andere Zeichen, die unterschiedliche Ergebnisse erzeugen, aber ich finde nur diese während meiner Tests ...

Ich habe mit vielen erweiterten ASCII-Zeichen getestet und habe das gleiche MD5 ...

Also verstehe ich nicht, warum ich Unterschiede mit einigen von ihnen habe ( " oder ' ), und ich würde gerne wissen, ob es eine Möglichkeit gibt, immer das PHP MD5-Ergebnis von Delphi zu erzeugen, was auch immer die Zeichen sind.

Irgendeine Idee?

  

Zum Beispiel:

     

mit Delphi :

     

": b15835f133ff2e27c7cb28117bfae8f4

     

: 3590cb8af0bbb9e78c343b52b93773c9

     

mit PHP :

     

": 3bd864034f446da13581129bb17f9191

     

: 024c94d6e03b6f67a86b952b914816c7

Formalisierung dieser Frage .. Ich habe die Antwort gefunden ... BTW, ich poste es, da andere dasselbe Problem haben könnten ...

" und ' sind in PHP maskiert ... also muss ich in Delphi \" und \' kodieren, wenn Sie denken, dass ich Zeichen vergessen habe oder wenn Sie etwas hinzufügen wollen Details, zögere nicht ...

    
Whiler 05.10.2012, 12:57
quelle

3 Antworten

4

Die Funktion PHP hash implementiert MD5 perfekt.

Das folgende PHP:

%Vor%

führt zu dieser Ausgabe:

%Vor%

Die beiden obersten Werte stammen also aus Ihrem Delphi-Code und den gleichen Werten, die Ignacio von Python erhalten hat. Es gibt also keinen Grund zu der Annahme, dass der MD5-Code von PHP fehlerhaft ist. Und die beiden letzten Werte sind, was Ihr PHP-Code zurückgibt.

Was uns zu dem Schluss führt, dass Sie Ihrem Delphi-Code eine andere Eingabe geben als die, die Sie Ihrem PHP-Code zuführen. Wenn Sie ihnen beide die gleiche Eingabe geben, erhalten Sie die gleiche Ausgabe.

    
David Heffernan 05.10.2012, 13:53
quelle
6

Delphi ist hier richtig.

%Vor%

PHP sollte diese Zeichen nicht standardmäßig maskiert haben; vergewissern Sie sich, dass es nicht konfiguriert ist.

    
Ignacio Vazquez-Abrams 05.10.2012 13:00
quelle
0
%Vor%

Um genau identisch zu verwenden LowerCase(MD5('1234')); ist das identisch mit PHP MD5.

    
Jessé Catrinck 17.03.2015 23:20
quelle