Obj-C MD5 Hash stimmt nicht mit Java / SQL überein

8

Ich versuche, eine Unicode-Zeichenfolge zu nehmen, sie durch eine MD5-Hash-Funktion zu übergeben und das Ergebnis als Base64 zu kodieren. Ich brauche MSSQL, Java und Obj-C, um alle das gleiche Ergebnis zurückzugeben. Ich habe MSSQL und Java zustimmen, aber ich kann nicht das gleiche Ergebnis mit Obj-C erhalten.

Java-Code (gibt "SC0RfYWqWLK / YNpIDdGi8w ==" zurück)

%Vor%

MSSQL-Code (gibt "SC0RfYWqWLK / YNpIDdGi8w ==" zurück)

%Vor%

Obj-C-Code (gibt "vZRPxuE84whftlx697i / Ig ==" zurück)

%Vor%

Bitte können Sie mir helfen, Obj-C den gleichen Wert wie die anderen zurückzugeben. Es wird in der iOS App ausgeführt. Danke.

    
UserNYC 09.08.2012, 14:21
quelle

2 Antworten

6

Nicht ein Experte hier, aber nur eine Vermutung - haben Sie versucht, mit NSUTF16LittleEndianStringEncoding Codierung für die Initialisierung von Daten aus Zeichenfolge?

    
Eimantas 09.08.2012, 16:40
quelle
1

Ich vermute, dass das Problem möglicherweise darin besteht, dass Java und MSSQL am Anfang der Zeichenfolge keine Bytefolgenmarkierung hinzufügen, während dataUsingEncoding: allowLossyConversion: with NSUnicodeStringEncoding tut.

Sie können dies überprüfen, indem Sie die Größe (und vielleicht sogar den tatsächlichen Inhalt, falls sich herausstellt, dass dies nicht das Problem ist) der tatsächlichen UTF-16-Daten in Java und Ziel-c überprüfen.

    
Analog File 09.08.2012 14:41
quelle