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

Posted

技术标签:

【中文标题】无法加密 OpenPGP.js 中的字符串【英文标题】:Can't encrypt the string in OpenPGP.js 【发布时间】:2021-08-18 19:00:26 【问题描述】:

我正在尝试使用 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);

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

【问题讨论】:

【参考方案1】:

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

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

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

【讨论】:

以上是关于无法加密 OpenPGP.js 中的字符串的主要内容,如果未能解决你的问题,请参考以下文章

Openpgp.js无法解密pgp消息

如何使用 OpenPGP.js 在 Objective-C 中加密/解密 PGP 消息

OpenPGP协议的一个JavaScript实现:OpenPGP.js

如何在openpgp JS中将参数消息作为文本传递

无法从存储在网站中的字符串可靠地匹配 Base 64 加密字符串:Python 程序

软件中的加密字符串[关闭]