gpt4 book ai didi

javascript - CryptoJS.AES.decrypt 失败原因?

转载 作者:行者123 更新时间:2023-11-29 19:56:35 26 4
gpt4 key购买 nike

CryptoJS.AES.decrypt 函数返回一个空的 WordArray。

我的参数是secretkeyiv。 key是256位的WordArray,确认无误,iv是128位的WordArray,也确认无误。

secret 使用 php 的 openssl_encrypt() 加密 - 明文为 32 字节 - 结果为 48 字节(因此它似乎正确填充)。

我已经尝试将 secret 作为 WordArray、十六进制字符串和 base64 字符串,但是当我调用时:

var decrypted = CryptoJS.AES.decrypt(secret, key, {iv: iv});

解密后是一个空的 WordArray。这让我发疯......失败的原因是什么?我认为这个错误在某个地方是 secret 的,有填充格式或一些奇怪的东西,但是 Cryptojs 和 openssl_(encrypt/decrypt) 已经证明彼此兼容我之前。请在我失去理智之前提供帮助。

最佳答案

好的,关键在于 CryptoJS.AES.decrypt(message, key, {iv:iv}) 的文档说您可以提供 WordArray、Hex 或 Base64对于 message 参数。这似乎不是真的。

我让它工作的唯一方法是给它一个 Base64 字符串来使用。

key 和 iv 必须仍然是 WordArray

*当我在胡闹的时间里尝试 Base64 字符串时,我一定没有更改服务器上的输出以实际发送 Base64 - 所以你去吧。

不过,感谢@CodesInChaos 提出字节顺序。这让我又开始搞乱编码了。

...现在清理散布在代码中的所有那些 console.log()var_dump()...

关于javascript - CryptoJS.AES.decrypt 失败原因?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15948699/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com