Использование Crypto ++ на iPhone SDK с Pycrypto на приложении
-
04-10-2019 - |
Вопрос
Я пытаюсь зашифровать HTTP-запросы, используя Crypto ++ и расшифруйте их с Pycrypto на конце сервера приложений. Используя шифрование ARC4, я могу успешно зашифровать и расшифровать на конце iPhone, но когда я пытаюсь расшифровать на приложении двигателя, результат искажен. Зашифровальный текст после шифрования на клиенте совпадает с текстом, полученным на сервере, когда я проверяю журнал, поэтому, если они визуально одинаковы, зачем расшифровать неудачу?
Я подумал, что может быть что-то связано с кодировкой NSString, так как мне найду, мне нужно позвонить в кодировать () на шифре на конце сервера, прежде чем расшифровать, просто чтобы избежать дешифрования (), не входящих в нее, пытаясь кодировать шифру в ASCII. Отказ У меня есть отдельный пост, который немного вписывает в это. Может кто-нибудь предложить несколько советов?
Crypto ++ / Pycrypto с Google App Engine
Обновление: Я обнаружил, что зашифрованный текст, полученный в результате шифрования в C с Crypto ++, не совпадает с зашифрованнымтекстом из шифрования в Python с Pycrypto. Может ли быть что-то, что я делаю не так с инициализацией ключа? Я делаю что-то вроде:
ARC4::Encryption enc("a");
в C. и в Python я делаю:
testobj=ARC4.new('a')
Результирующий шифр%-учебный, отличается от C, чем в Python. Я заметил, что в C я могу пройти 2-й параметр для Keyalthing, что я догадался, должен быть 1 для «A», что приводит к другому шифру, чем при наличии параметра. Возникший результат% был еще отличным от кодировки Python, хотя.
Есть ли что-нибудь, особенно плохо с моим инициатором?
Решение
Я обнаружил, что проблема не была инициатором любого крипто, а по ошибке, пытаясь зашифрованным зашифрованным текстом шифра в NSString, который не может просто принимать сырые двоичные данные без особых кодировков. Хитрость заключалась в том, чтобы кодировать данные в BASE64 или BASE16, чтобы он был читабелен, затем используйте unexlify на конце сервера перед расшифровкой.