angular - 节点伪造 AES 数据解密不返回原始数据。角/打字稿
问题描述
尝试解密密码以获取原始数据,但未按预期工作。请协助:
代码:
general() {
const foo = {
pass: "Werwerw",
username: "qqwewdxas"
};
var key = "d7rccozrm8q1iuvi";
var iv = "ttmw0lipoht7kz18";
console.log("Key", key);
console.log("IV", iv);
var cipher = forge.cipher.createCipher('AES-CBC', key);
cipher.start({ iv: iv });
cipher.update(forge.util.createBuffer(JSON.stringify(foo)));
cipher.finish();
var encrypted = cipher.output;
// outputs encrypted hex
console.log("Encrypted", encrypted.toHex());
var decipher = forge.cipher.createDecipher('AES-CBC', key);
decipher.start({ iv: iv });
decipher.update(encrypted);
var result = decipher.finish(); // check 'result' for true/false
console.log("Decrypted", decipher.output.toHex());
}
Response : Encrypted: 8e3cb8653b17fc0f5e50916d8d22ec666207babdb4b0b945ca06fde4cc31a6bc40222de1210d830f3d672f4001b69a30 Decrypted: 7b2270617373223a2257657277657277222c22757365726e616d65223a22717177657764786173227d
解决方案
经过几天的挣扎,我终于找到了答案。我将加密数据作为缓冲区传递,它起作用了:
decipher.update(forge.util.createBuffer(encrypted)); #instead of decipher.update(encrypted);
推荐阅读
- powerbi - 如何防止过滤器应用于多个可视化
- android - 后台位置获取 - Android
- python - 如何在数据框中找到值是字符串类型的单元格
- node.js - Nodejs和Nginx的进程
- r - 如何从此绘图图中删除分层线和图例
- mysql - 大多数/典型数据库是否使用 Stdio?
- sql - 为什么 Oracle OFFSET 和 LIMIT 在使用 DISTINCT 时不起作用
- python - 取消旋转 Pandas 数据框,同时将另一列附加到值列
- vba - 尝试在一天内获取 MS Access 查询时间
- ramda.js - 如何在 R.zipWith 中使用预定义函数