首页 > 解决方案 > 节点伪造 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

标签: angulartypescriptnode-forge

解决方案


经过几天的挣扎,我终于找到了答案。我将加密数据作为缓冲区传递,它起作用了:

decipher.update(forge.util.createBuffer(encrypted)); #instead of decipher.update(encrypted);

推荐阅读