在传输之前,我们使用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-任何东西)已经不安全了,所以我可能不得不要求制造新的密钥。
发布于 2022-01-04 12:47:59
OpenPGP实现有不同的安全性考虑,OpenPGP.js似乎决定通过以下PR:https://github.com/openpgpjs/openpgpjs/pull/1264/files#默认拒绝DSA/ElGamal
但是,可以通过配置覆盖此行为,在测试中可以找到示例。
https://stackoverflow.com/questions/70527381
复制相似问题