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

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

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

Вот мой сценарий:

  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
ключ: jarbas
зашифровать строку: 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 возврата traceBox моего iPad.


person bsberti    schedule 05.12.2013    source источник
comment
Какую серверную среду и код для шифрования вы используете? Также немного непонятно, какой алгоритм вы используете в AS3 без ключа и вектора инициализации. Здесь вы можете найти реализацию asp.net для AS3 stackoverflow.com/questions/17276371/ А здесь PHP один stackoverflow.com/questions/15490903/   -  person gMirian    schedule 07.12.2013
comment
Я использую PHP в серверной среде, я отредактирую пост со своим сценарием, извините за это.   -  person bsberti    schedule 09.12.2013