[英]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.