如何解决cryptojs解密在角度7中返回空
我试图在我的angular 7项目中实现标准的加密/解密功能。但是,我在解密数据时遇到问题。
你能帮我吗?
import * as CryptoJS from 'crypto-js';
constructor(protected http: Http) {
this.cjsKey = 'developer';
this.encryptedText = this.cjsEncrypt('stackoverflow');
this.decryptedText = this.cjsDecrypt(this.encryptedText);
console.log(this.encryptedText,this.decryptedText); //return empty
}
public cjsEncrypt(value) {
let iv = CryptoJS.lib.WordArray.random(16),key = CryptoJS.enc.Utf8.parse(this.cjsKey);
let options = {
iv: iv,mode: CryptoJS.mode.CBC,padding: CryptoJS.pad.Pkcs7
};
let encrypted = CryptoJS.AES.encrypt(value,key,options).toString();
iv = CryptoJS.enc.Base64.stringify(iv);
let result1 = {
iv: iv,value: encrypted,mac: CryptoJS.HmacSHA256(iv + encrypted,key).toString()
}
let result = JSON.stringify(result1);
result = CryptoJS.enc.Utf8.parse(result);
return CryptoJS.enc.Base64.stringify(result);
}
public cjsDecrypt(value) {
let encryptStr = CryptoJS.enc.Base64.parse(value);
let encryptData = encryptStr.toString(CryptoJS.enc.Utf8);
encryptData = JSON.parse(encryptData);
let iv = CryptoJS.enc.Base64.parse(encryptData.iv);
var decrypted = CryptoJS.AES.decrypt(encryptData.value,CryptoJS.enc.Utf8.parse(this.cjsKey),{
iv: iv,padding: CryptoJS.pad.Pkcs7
});
decrypted = CryptoJS.enc.Utf8.stringify(decrypted);
return decrypted;
}
这对应于MAC标准,后面是我的使用laravel api构建的后端。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。