gpt4 book ai didi

javascript - Node.js Base64 字符串的 AES 解密

转载 作者:太空宇宙 更新时间:2023-11-04 03:02:16 26 4
gpt4 key购买 nike

我正在解密来自 Firebase 的发送到 Firebase 函数 的消息。

我对加密还很陌生。但我使用的是 AES-256 和静态 IV(我知道没有随机 iv 并不是最好的解决方案)。

但我在 AndroidiOS 上都得到了正确的结果,但在 node.js 上却没有。

消息采用 Base64 编码

这是我的代码:

const crypto = require('crypto');
const cryptoKey = "MyEncryptionKey1MyEncryptionKey1";
const text = "Cidor8Ph7pZqPw0x2AwIKw=="

let messageToDecrypt = new Buffer(text, "utf8")
let key = new Buffer(cryptoKey, "utf8");
var decipher = crypto.createCipheriv('aes-256-cbc', key, iv);
var decoded = decipher.update(messageToDecrypt,'base64','utf-8');
decoded += decipher.final('utf-8');
text = decoded
console.log(decoded

代码编译并运行,但它给了我一个冗长的答案,看起来类似于此�ŴC�p�-Q�)�1H&�8pD}5�i����g

关于如何改进此代码有什么想法吗?

最佳答案

我立即意识到,您没有正确创建 messageToDecrypt 缓冲区。您正在写:

const text = "Cidor8Ph7pZqPw0x2AwIKw=="
let messageToDecrypt = new Buffer(text, "utf8")

这意味着,创建一个缓冲区,我给你的文本是utf8编码的。它不是 utf8 编码,而是base64 编码。

所以你应该使用:

const text = "Cidor8Ph7pZqPw0x2AwIKw=="
let messageToDecrypt = Buffer.from(text, "base64")
<小时/>

考虑编码造成的缓冲区差异:

> Buffer.from(text, "utf8");
<Buffer 43 69 64 6f 72 38 50 68 37 70 5a 71 50 77 30 78 32 41 77 49 4b 77 3d 3d>
> Buffer.from(text, "base64");
<Buffer 0a 27 68 af c3 e1 ee 96 6a 3f 0d 31 d8 0c 08 2b>

关于javascript - Node.js Base64 字符串的 AES 解密,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52044005/

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