首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >CryptoJS AES加密/解密问题

CryptoJS AES加密/解密问题
EN

Security用户
提问于 2022-06-21 13:23:59
回答 1查看 1.4K关注 0票数 2

使用CryptoJS的简单加密/解密给了我一个奇怪的输出。有人能告诉我密码哪里出错了吗?(我在控制台中寻找输出)

代码语言:javascript
复制
var code = "Testcode";
var diterations = 1000;
var defaultkeyBytes = new CryptoJS.PBKDF2(code, code, { hasher: CryptoJS.algo.SHA512, keySize: 48 / 4, iterations: diterations });
var key = new CryptoJS.lib.WordArray.init(defaultkeyBytes.words, 32);
var iv = new CryptoJS.lib.WordArray.init(defaultkeyBytes.words.splice(32 / 4), 16);
var data = "test message new test message";
var h = CryptoJS.AES.encrypt(data, key, { iv: iv, mode: CryptoJS.mode.CBC });
console.log(h.toString());
var z = CryptoJS.AES.decrypt(h, key, { iv: iv, mode: CryptoJS.mode.CBC });
console.log(z.toString());

输出:

“跑小提琴”

"qx84iCiNL1YYWJhE6nG8KZxOCh4VGOBTaeCEAjy1P+s=“"74657374206d657373616765206e65772074657374206d657373616765”

https://jsfiddle.net/3q7tozph/

EN

回答 1

Security用户

回答已采纳

发布于 2022-06-21 13:27:13

有关解密/加密输出的详细信息可以在CryptoJS:密码输出的文档页面中找到。

加密

正如@dave_汤普森_085在他的评论中所说的,您从h.toString()中看到的输出是一个CipherParams对象,其格式默认为base64,但它的WordArray组件可以分隔。

代码语言:javascript
复制
> data = "qx84iCiNL1YYWJhE6nG8KZxOCh4VGOBTaeCEAjy1P+s="
> base64.b64decode(data)
b'\xab\x1f8\x88(\x8d/V\x18X\x98D\xeaq\xbc)\x9cN\n\x1e\x15\x18\xe0Si\xe0\x84\x02<\xb5?\xeb'

解密

它在工作,只是一个正在输出的HexString。快速的Python代码来显示它。

代码语言:javascript
复制
> from binascii import unhexlify
> unhexlify("74657374206d657373616765206e65772074657374206d657373616765")
b'test message new test message'

解密输出是一个WordArraytoString()方法打印完整的HexString,而不是32位值的数组。z对象本身正确解密。

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

https://security.stackexchange.com/questions/262881

复制
相关文章

相似问题

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