Как просто зашифровать и расшифровать строку повара ie? - PullRequest
1 голос
/ 27 февраля 2020

Я пытаюсь зашифровать строку при установке ее как повара ie с javascript AES, она прекрасно шифрует. но после того, как я восстановил строку (внутри повара ie), чтобы расшифровать ее, она не возвращается как исходная строка.

class Auth{
    constructor(){
        this.pass = "iscae";
        this.cookies = new Cookies();
        this.email = this.cookies.get("email");
        this.connected = false;
        this.checkConnection();
        return this;
    }
    checkConnection(){
        if(this.email !== undefined){
            this.email = crypto.AES.decrypt(this.email,this.pass).toString();
            this.connected = true;
        }
        else{
            this.connected = false;
        }
        return {
            email : this.email,
            connected : this.connected
        };
    }
    connect(email){
        this.email = crypto.AES.encrypt(email,this.pass).toString();
        this.cookies.set("email",this.email);
        return this;
    }
    disconnect(){
        this.cookies.remove("email");
        return this;
    }
}


export default Auth;

1 Ответ

3 голосов
/ 27 февраля 2020

Проблема в строке:

this.email = crypto.AES.decrypt(email,this.pass).toString();

Без параметра в toString() вы получите строку шестнадцатеричных кодов ASCII. Например, когда обычный текст имеет вид «test@email.com», вы получите:

7465737440656d61696c2e636f6d

в шестнадцатеричном представлении (74 = "t", 65 = "e", ...).

Чтобы получить нормальное строковое представление, т.е.

test@email.com

, вам необходимо передать параметр как это:

toString(CryptoJS.enc.Utf8);

toString ведет себя так, потому что функция дешифрования crypto.AES.decrypt() возвращает байтовый массив, так как содержимое также может быть двоичными данными (например, изображения или другие данные). toString() просто конвертирует каждый байт в шестнадцатеричное представление строки.

Передав параметр CryptoJS.enc.Utf8, вы прямо указываете методу toString() обрабатывать байты как символы в кодировке UTF-8.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...