ran*_*cts 3 javascript encryption cryptojs
该CryptoJS.AES.decrypt函数返回一个空的 WordArray。
我的参数是secret、key、 和iv。key是一个256位WordArray并且被确认是正确的,iv是一个128位WordArray并且也被确认是正确的。
秘密是使用 php 加密的openssl_encrypt()- 明文是 32 字节 - 结果是 48 字节(所以它似乎填充正确)。
我已经尝试将 Secret 作为 WordArray、十六进制字符串和 base64 字符串,但是当我调用时:
var decrypted = CryptoJS.AES.decrypt(secret, key, {iv: iv});
Run Code Online (Sandbox Code Playgroud)
解密后是一个空的WordArray。这让我发疯......什么是失败?我认为错误是在某个秘密的地方,有填充格式或奇怪的东西,但是Cryptojs和 openssl_(encrypt/decrypt)之前已经证明对我来说是彼此兼容的。请在我失去理智之前帮忙。
好的,关键是文档说CryptoJS.AES.decrypt(message, key, {iv:iv})您可以为参数提供 WordArray、Hex 或 Base64 message。这似乎不是真的。
我让它工作的唯一方法是给它一个 Base64 字符串来使用。
key 和 iv 仍必须是WordArray
*当我在我的胡闹中尝试 Base64 字符串时,我一定没有更改服务器上的输出以实际发送 Base64 - 所以你就可以了。
不过,还是要感谢 @CodesInChaos 提出了字节顺序。它让我再次搞乱编码。
...现在清理代码中散落的所有console.log()'s 和's ...var_dump()
| 归档时间: |
|
| 查看次数: |
2538 次 |
| 最近记录: |