繁体   English   中英

WinJS中的Crypto.js错误加密

[英]Crypto.js error encryption in winjs

我正在尝试在WinJS javascript和PHP之间实现AES 128加密。 我在winJS中使用Crypto.js进行加密。

这是我的加密代码:

var options = { mode: CryptoJS.mode.CBC, padding: CryptoJS.pad.Pkcs7 };

/*** encrypt */
var encryptDATA= CryptoJS.AES.encrypt("2.0", "aaaaaaaaaaaaaaaa", options);
var ciphertext = CryptoJS.enc.Base64.stringify(json.ciphertext);

/*** decrypt */
var decrypted = CryptoJS.AES.decrypt(ciphertext, "aaaaaaaaaaaaaaaa", options);
var plaintext = decrypted.toString(CryptoJS.enc.Utf8);

加密cryptoDATA时得到正确的答案,但是尝试加密ciphertext时得到错误的答案。 为什么会这样呢?

如果使用Base64.stringify ,则需要使用Base64.parse

我的猜测是传递给Base64.stringify()函数的json.ciphertext值不是CryptoJS.lib.WordArray的实例,需要Base64编码才能正常运行。

我在这里设置了一个jsfiddle: http : //jsfiddle.net/9Hyfd/,以演示使用该功能加密字符串并粘贴以下相关代码:

/*** encrypt base64 encoded */
var words = CryptoJS.enc.Utf8.parse("2.0"); 
var ciphertext = CryptoJS.enc.Base64.stringify(words);
var encryptDATA = CryptoJS.AES.encrypt(ciphertext, "aaaaaaaaaaaaaaaa", options);

/*** decrypt base64 encoded */
var decrypted = CryptoJS.AES.decrypt(encryptDATA, "aaaaaaaaaaaaaaaa", options);
var plaintext = CryptoJS.enc.Utf8.stringify(decrypted);
plaintext = CryptoJS.enc.Base64.parse(plaintext).toString(CryptoJS.enc.Utf8);

请注意,这可能不是解决问题的最有效方法,但是它确实可以正确解密当前尝试使用的数据。

暂无
暂无

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

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