首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >winjs中的Crypto.js错误加密

问winjs中的Crypto.js错误加密
EN

Stack Overflow用户
提问于 2013-03-19 11:26:21
回答 2查看 1K关注 0票数 0

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

这是我的加密代码:

代码语言:javascript
复制
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);

当我加密encryptDATA时,我得到了正确的答案,但当我试图加密ciphertext时,我得到了错误的答案。为什么会发生这种情况?

EN

回答 2

Stack Overflow用户

发布于 2013-03-19 11:39:37

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

票数 0
EN

Stack Overflow用户

发布于 2013-03-20 01:21:41

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

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

代码语言:javascript
复制
/*** 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);

注意:这可能不是解决问题的最有效的方法,但它确实正确地解密了您当前正在尝试的数据。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15490979

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档