Gio*_*usa 1 javascript encryption node.js google-cloud-functions
我正在解密Firebase正在发送到Firebase function.
我对加密很陌生。但是我正在使用AES-256, 静态IV(我知道没有随机 iv 不是最好的解决方案)。
但我在两者上都得到了正确的结果Android,iOS但在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
Run Code Online (Sandbox Code Playgroud)
代码编译并运行,但它给了我一个看起来类似于这个的笨拙的答案 ??C?p?-Q?)?1H&?8pD}5?i????g
关于如何改进此代码的任何想法?
立即跳出来给我的是你没有messageToDecrypt正确创建你的缓冲区。你在写:
const text = "Cidor8Ph7pZqPw0x2AwIKw=="
let messageToDecrypt = new Buffer(text, "utf8")
Run Code Online (Sandbox Code Playgroud)
这意味着,创建一个缓冲区,我给你的文本是utf8编码的。它不是utf8编码的,它是base64编码的。
所以你应该使用:
const text = "Cidor8Ph7pZqPw0x2AwIKw=="
let messageToDecrypt = Buffer.from(text, "base64")
Run Code Online (Sandbox Code Playgroud)
考虑编码在缓冲区中的差异:
> 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>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1886 次 |
| 最近记录: |