【问题标题】:NOdeJs Rest API response encoded with private key使用私钥编码的 NOdeJs Rest API 响应
【发布时间】:2022-01-26 01:23:10
【问题描述】:

我已经获得了在 nodejs 中调用 restAPI 的公钥和私钥。 两个键都是清晰的 ASCII 格式。

我使用以下代码来加密我的消息:


(async () => {
    // put keys in backtick (``) to avoid errors caused by spaces or tabs

    // ENCRYPT

    const publicKeyArmored = fs.readFileSync(publicKeyFile, {
      encoding: 'utf8',
      flag: 'r'
    });
    
    const publicKey = await openpgp.readKey({ armoredKey: publicKeyArmored });

    const encrypted = await openpgp.encrypt({
        message: await openpgp.createMessage({ text: 'Hello, World!' })
    ,   encryptionKeys: publicKey
    // ,        signingKeys: privateKey // optional
    });
    
    console.log("Encrypted:", encrypted); // '-----BEGIN PGP MESSAGE ... END PGP MESSAGE-----'
}

但是,当我尝试解密响应时,我发现的所有代码示例似乎都需要密码才能使用提供的私钥,但这并没有以任何方式编码,它还是纯 ascii,以:

-----BEGIN PGP PRIVATE KEY BLOCK-----
Version: GnuPG v2.0.22 (GNU/Linux)

lQO+BGHApmABCAC70QG0T3bh1MVRGKmY9cOM2NFEie2KXCLGXUPa+2B5JOnDypGX
msoLau8FtKIqvAVAYSsONlE4P4RcltyrOTHLMvWhu73ZTJIBu6GGkgM6bKOtu2Rp
/VbPylPIXrkA3A4s0089VGgmFqJul04lit2svLwxD31ZEIY3Ke3kd0dV0nM4npRO
EZUPR5Qr6KCwBsL+ZHbDuG2YrC7oKcnJTXcdszrF7+FLAwI8viZhJOXyagJRioXd
/H/IpauXyvejN22/eRjch9IRMSz+qh0avj9tcuuJ1k4sBQQukeoIoPwFe9Rb9TY2 .....

以下代码表明我需要密码,但此密钥似乎不需要密码:


async function decrypt() {
  const privateKey = (await openpgp.key.readArmored([privateKeyArmored])).keys[0];
  await privateKey.decrypt(passphrase);

  const encryptedData = fs.readFileSync("encrypted-secrets.txt");
  const decrypted = await openpgp.decrypt({
    message: await openpgp.message.readArmored(encryptedData),
    privateKeys: [privateKey],
  });

  console.log(decrypted.data);
}

那么我如何在没有密码的情况下使用它?

提前感谢您的圣诞精神和任何帮助!

【问题讨论】:

    标签: node.js api rest private-key pgp


    【解决方案1】:

    您的私钥是ASCII armored,因此可以以文本表示形式传输它。调用gpg --dearmor 后,您将获得二进制数据。也可以使用密码加密存储私钥,或者根本不加密(在第二种情况下,您不需要调用privateKey.decrypt())。要检查这一点,您可以使用命令gpg --list-packets keyfile.asc

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-08-04
      • 1970-01-01
      • 1970-01-01
      • 2015-09-14
      • 1970-01-01
      • 1970-01-01
      • 2023-01-02
      • 1970-01-01
      相关资源
      最近更新 更多