C++ MD5 Rückgabewert unterscheidet sich von php?

PowerAzor

Grünschnabel
Hi,
freut mich dieses Board gefunden zu haben - und ich entschuldige mich, falls mein Problem schonmal geklärt wurde (hab jedenfalls nichts gefunden).

Ich hab für C++ ne Source für eine MD5 Hash Umwandlung gefunden (ich will bestimmte CStrings in MD5 umwandeln). Das funktioniert auch alles soweit. Ich übergebe den CString, den ich umwandeln will als Parameter und bekomme den md5 string zurück. Nur wenn ich mir vom gleichen Wort zur Kontrolle von einer Webseite den MD5 Hash anzeigen lasse (also dann eben nicht in C++ sondern in PHP), dann hat das gleiche Wort einen anderen MD5 Hash?
Der MD5 Wert sollte doch unabhänig davon in welcher Programmiersprache er erzeugt wurde immer der gleiche sein? Gibt es hier etwas, das ich beachten muss beim umwandeln von CStrings?
Bin für jede Hilfe dankbar.
 
Danke für die Hilfe.

Sieht mir auch ganz danach aus, als sei das der Grund für mein Problem.
Nur weiß ich leider nicht, wie ich das Problem lösen kann. Habe nun mal das Wort von CString nach char[] konvertiert und wenn ich mir dann davon den MD5 Hash anzeigen lasse, so stimmt dieser mit dem MD5 Hash von PHP überein.
Da mein Wissen über C++ aber nur mittelmäßig ist, bin ich nun auf ein neues Problem in diesem Zusammenhang gestoßen: Wie kann ich Sonderzeichen verwenden, wenn ich als Datentyp nicht mehr CString sondern char habe? Oder anders: In welchen Datentyp sollte ich den eingelesenen CString am besten konvertieren, damit der daraus erstellte MD5 Hash immer identisch zu dem von PHP ist?
PHP liefert mir nämlich immernoch einen anderen Wert für den MD5 Hash, falls das Wort Sonderzeichen enthält.
 
Sorry, dass ich gleich nochmal nachfrage, aber weiß denn niemand Rat, wie ich es schaffe, dass der MD5 Hash meines eingelesenen CStrings identisch ist zu dem von PHP erzeugten MD5 Hashes des gleichen Wortes?

Ich hab wie gesagt diese beiden fertigen MD5 Funktionen eingebaut. Die erste gibt immer nen anderen Wert als php. Die zweite den gleichen. Allerdings bekomme ich in char doch keine Sonderzeichen gespeichert (oder doch?)?
MD5Sum(const CString& sSource);
MD5Sum(const unsigned char* pachSource, uint32 nLen);
Beide Funktionen rufen letztlich CString MD5Sum::Calculate(const unsigned char* pachSource, uint32 nLen) auf.
 
Zurück