Неправильный возврат при дешифровании с использованием Air 3.9 для iOS 7 и библиотеки as3crypto (AES)

Я пытаюсь создать проверку безопасности пароля, который отправляет на сервер зашифрованный пароль (используя библиотеку as3crypto для шифрования AES и PHP в среде сервера) и получаю XML с тем же паролем, зашифрованным снова, и ситуацию с паролем (если это действительно или нет). Когда я получаю пароль, я расшифровываю и сравниваю его с ранее введенным паролем. Он работает на ПК, работает на Android, но когда я пробую тот же код на своем iPad, я возвращаю некоторые азиатские идеограммы, которые явно не соответствуют введенному паролю.

Я уже попытался изменить BIT_KEY на 192 и 256, и ничего не изменилось. У кого-нибудь есть идеи, чтобы это исправить?

Там мое scneario:

  1. Пользователь вводит пароль и нажимает подтвердить, чтобы подтвердить его.

  2. Кнопка вызывает эту функцию:

    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)

  1. Затем на стороне сервера есть код, который просто возвращает XML с двумя свойствами: пароль и проверенный. Свойство "пароль" совпадает с тем, которое я отправил, а "проверено" - это число (0 или 1), которое на данный момент всегда возвращает 1.

  2. Возвращаясь к 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.

0 ответов

Другие вопросы по тегам