无法加密 OpenPGP.js 中的字符串

问题描述

我正在尝试使用 OpenPGP.js 加密文本。

这是一个错误示例:https://jsfiddle.net/7e2s516d/

let publicKeyArmored = `-----BEGIN PGP PUBLIC KEY BLOCK-----

xjMEYLTYzBYJKwYBBAHaRw8BAQdAoatyco6C3CO87ZxgjIfWsFv3RMxs5W1F
EinwU2UiQ+bNF3Rlc3QgPHRlc3RAZXhhbXBsZS5vcmc+wowEEBYKAB0FAmC0
2MwECwkHCAMVCAoEFgACAQIZAQIbAwIeAQAhCRC+iM+wNlG7chYhBFZgyLBQ
Cavx4mET576Iz7A2UbtyVa8BAP1oFrSwoGdd7+dgBUu7KwU02wvrtuqyURe5
GFSTyMn2AQDWTsJjgYq7hPqSQoeZ30xN0eUoiuiyIA/ffqhM2qHPD844BGC0
2MwSCisGAQQBl1UBBQEBB0CxgKqNlcBTkuaFRvYm/UbR8ZKFFda0tnUCTzl/
tgCsJgMBCAfCeAQYFggACQUCYLTYzAIbDAAhCRC+iM+wNlG7chYhBFZgyLBQ
Cavx4mET576Iz7A2UbtysPgA/0pn4n3QqBBc56/okcGFdC78LEwDLN/ZLkY6
azfQ1aqwAP0d9CWw9ywheGtB1SBCzHZbToKaltVFCNT1ArSUFK45Dg==
=pnHg
-----END PGP PUBLIC KEY BLOCK-----
`;

let messageEncrypt = openpgp.encrypt({
    message: openpgp.createMessage({ text: 'test' }),publicKeys: openpgp.readKey({ armoredKey: publicKeyArmored })
});

console.log(messageEncrypt);

我使用的是 OpenPGP.js 的最新版本 (5.0.0-3)

解决方法

您似乎没有检查这些函数的文档。

  1. encryptcreateMessagereadKey 返回的是 Promise,而不是简单的值(即 MessagePublicKey)。因此,您需要正确使用这些承诺。
  2. 您传递给 EncryptOptions 方法的
  3. encrypt 对象不应具有 publicKeys 属性,而是 encryptionKeys

一旦你做了这些改变,它就会正常工作。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...