Frage

Ich versuche zu verschlüsseln HTTP-Anforderungen Krypto ++ verwenden und entschlüsseln sie mit PyCrypto auf der App Engine Server Ende. Mit ARC4 Verschlüsselung kann ich erfolgreich Verschlüsseln und Entschlüsseln auf dem iPhone Ende, aber wenn ich auf App Engine versuchen zu entschlüsseln, wird das Ergebnis verstümmelt. Der verschlüsselte Text nach auf der Client-Verschlüsselung ist die gleiche wie der Text auf dem Server empfangen werden, wenn ich die Protokollierung zu überprüfen, so dass, wenn sie visuell gleich ist, warum würde die Entschlüsselung fehlschlagen?

Ich dachte, vielleicht hat es etwas mit der Codierung des NSString zu tun, wie ich mich kodieren nennen finden müssen () auf der Chiffre auf dem Server Ende vor nur zu vermeiden entschlüsseln Entschlüsseln () andernfalls darauf versuchen die codieren Chiffre in ascii. Ich habe einen separaten Beitrag, der ein wenig in diese eintaucht. Kann jemand bieten einige Ratschläge?

Crypto ++ / PyCrypto mit App Engine Google

Update: Ich habe entdeckt, dass der verschlüsselten Text von Verschlüsselung in C ++ mit Crypto resultiert, ist nicht das gleiche wie der von Chiffretext mit PyCrypto in Python zu verschlüsseln. Könnte es etwas sein, ich mit der Initialisierung der Schlüssel falsch machen werde? Ich mache so etwas wie:

    ARC4::Encryption enc("a");

in C und Python ich tun:

testobj=ARC4.new('a')

Das% -encoded resultierende Chiffre ist anders in C als in Python. Ich bemerkte, dass in C, ich habe einen zweiten Parameter für Schlüssellänge passieren kann, was ich sollte für „a“ sein 1 erraten, was zu einem anderen Chiffre, als wenn keine Parameter setzen. Das% -encoded Ergebnis war noch verschieden von der Python-Codierung, though.

Gibt es etwas Blick besonders übel mit meinem init vielleicht?

War es hilfreich?

Lösung

Ich habe entdeckt, dass das Problem nicht mit der init von beide Krypto impl war, sondern fälschlicherweise versucht, den verschlüsselten Chiffretext in ein NSString zu stopfen, die einfach rohe Binärdaten ohne besondere Codierung übernimmt seinen Platz. Der Trick bestand darin, die Daten in base64 oder Base16 zu codieren, so dass es lesbar ist, dann auf dem Server Ende verwendet unhexlify vor entschlüsseln.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top