繁体   English   中英

如何简单地加密和解密cookie字符串?

[英]How to simply encrypt and decrypt cookie string?

我试图在使用 javascript AES 将字符串设置为 cookie 时对其进行加密,它可以很好地加密。 但是在我恢复字符串(在 cookie 内)对其进行解密后,它不会作为原始字符串返回。

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;

问题出在这一行:

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 编码字符。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM