【发布时间】:2022-01-28 07:14:11
【问题描述】:
我们在传输前使用 PGP 加密来加密文件。我们使用 npm 包 OpenPGP.js 使用来自收件人的公钥加密文件。我已经以装甲格式导出了公钥,以便与 openpgp.encrypt 函数一起使用。
这是加密文件的代码:
const publicKey = await openpgp.readKey({ armoredKey: key.publicKey });
const encrypted = await openpgp.encrypt({
message: await openpgp.createMessage({ text: readStream }),
encryptionKeys: publicKey
});
但是函数调用会产生这个错误:
错误:错误加密消息:找不到有效的加密密钥 密钥 ea8be7d9f2fd53a7 中的数据包:elgamal 密钥被认为太弱。
gpg --list-keys 的输出给出以下信息
pub dsa1024 2010-07-23 [SCA]
ABCDEFGHIJK
uid [ unknown] my recipient <my.recipient@email.com>
sub elg2048 2010-07-23 [E]
我可以使用 GnuPG 加密文件,但 OpenPGP 似乎不喜欢公钥。此错误消息有效吗?我是否需要向客户端请求另一个密钥,或者有没有办法绕过此错误消息?
*编辑:经过一些研究,我发现 DSA-1024/(ElGamal-anything) 不再安全,所以我可能不得不请求制作新密钥。
【问题讨论】:
标签: node.js public-key-encryption pgp openpgp.js