Неправильный возврат при дешифровании с использованием Air 3.9 для iOS 7 и библиотеки as3crypto (AES)
Я пытаюсь создать проверку безопасности пароля, который отправляет на сервер зашифрованный пароль (используя библиотеку as3crypto для шифрования AES и PHP в среде сервера) и получаю XML с тем же паролем, зашифрованным снова, и ситуацию с паролем (если это действительно или нет). Когда я получаю пароль, я расшифровываю и сравниваю его с ранее введенным паролем. Он работает на ПК, работает на Android, но когда я пробую тот же код на своем iPad, я возвращаю некоторые азиатские идеограммы, которые явно не соответствуют введенному паролю.
Я уже попытался изменить BIT_KEY на 192 и 256, и ничего не изменилось. У кого-нибудь есть идеи, чтобы это исправить?
Там мое scneario:
Пользователь вводит пароль и нажимает подтвердить, чтобы подтвердить его.
Кнопка вызывает эту функцию:
public function restServiceCall(event:MouseEvent = null):void { pswdString = txtKey.text; // Create the HTTP request object var request:URLRequest = new URLRequest("http://jpiaget.com.br/webservice.php"); request.method = URLRequestMethod.GET; var criptedKey:String = AES.encrypt(pswdString, key, 128); // Add the URL variables var variables:URLVariables = new URLVariables(); variables.application = currentApplication; variables.password = criptedKey; request.data = variables; // Initiate the transaction requestor = new URLLoader(); requestor.dataFormat = URLLoaderDataFormat.TEXT; requestor.addEventListener(Event.COMPLETE, httpRequestComplete); requestor.load(request); }
Ценности ->
pswdString: abc
ключ: Джарбас
зашифрованная строка: tXb1 / 1ZWVlb3wN8 (base64)
Затем на стороне сервера есть код, который просто возвращает XML с двумя свойствами: пароль и проверенный. Свойство "пароль" совпадает с тем, которое я отправил, а "проверено" - это число (0 или 1), которое на данный момент всегда возвращает 1.
Возвращаясь к AS3, я вызываю эту функцию:
private function httpRequestComplete(event:Event):void { //Preparese.traceBox.txtTrace.appendText(event.target.data); var newXML:XML = new XML(event.target.data); var validatedString:String = newXML.attribute("password"); validated = (newXML.attribute("validated") == "1") ? true : false; //Preparese.traceBox.txtTrace.appendText("validatedString decripted: " + AES.decrypt(validatedString, chave, 128)); Here i have some asian ideograms, what must to be "abcde" var decryptedValidated:String = AES.decrypt(validatedString, chave, 128); if (pswdString == decryptedValidated && validated) { Preparese.traceBox.txtTrace.appendText("VALID PASSWORD/!"); Preparese(parent).checkConection(); Preparese(parent).removeChild(this); } }
http://puu.sh/5CRep.jpg - PrintScreen моего iPad traceBox.