Javascript Openpgp.js无法解密pgp消息

Javascript Openpgp.js无法解密pgp消息,javascript,angular,encryption,openpgp,openpgp.js,Javascript,Angular,Encryption,Openpgp,Openpgp.js,我使用的是openpgp.js版本2.2.1 所以我成功地加密了一条消息 const options = { data: voteObject.option, // input as Message object publicKeys: (pgp.key.readArmored(pubkey)).keys, // for encryption }; pgp.encrypt(options).then(function(ciphertext) { consol

我使用的是openpgp.js版本2.2.1

所以我成功地加密了一条消息

const options = {
    data: voteObject.option,       // input as Message object
    publicKeys: (pgp.key.readArmored(pubkey)).keys, // for encryption
};

pgp.encrypt(options).then(function(ciphertext) {
    console.log(ciphertext.data);
});
这将记录加密的消息。我现在的问题是我无法解密它。在这一点上我完全不知所措,老实说,我已经尝试了所有的事情,我不知道我在做什么了。我知道这没什么可合作的,但我真的没有什么可以给予的


任何建议都将是巨大的帮助

我认为您将密钥的密码短语与加密字符串的密码混为一谈。 通常,在PGP中,发送方使用接收方的公钥对消息进行加密。然后,消息的接收者可以用他的秘密密码短语解密他的私钥,并用得到的解密私钥解密消息

我在下面添加了一个工作示例:

加密

解密

这是一个发送方和一个接收方使用PGP的通常过程。请注意,消息签名和检查签名丢失

现在解密选项中还有密码。 为此,请参见文档中的示例:

var options, encrypted;

options = {
    data: 'Hello, World!',      // input as String
    passwords: ['secret stuff'] // multiple passwords possible
};

openpgp.encrypt(options).then(function(ciphertext) {
    encrypted = ciphertext.data; // '-----BEGIN PGP MESSAGE ... END PGP MESSAGE-----'
});
options = {
    message: openpgp.message.readArmored(encrypted), // parse armored message
    password: 'secret stuff'                         // decrypt with password
};

openpgp.decrypt(options).then(function(plaintext) {
    return plaintext.data; // 'Hello, World!'
});
在这种情况下,密码用于对消息进行加密和解密—根本没有公钥或私钥


我希望这有帮助

我使用crypto js进行加密和解密。如果你想要那个解决方案,我随时准备帮助你。到底是什么不起作用?您是否收到任何错误消息?您传递给encrypt的选项值是多少?@pschild options包含我要加密的字符串和pgp公钥,当我尝试解密时,我传递以下选项:加密的消息、私钥和密码短语。然后我得到这个错误:解密消息时出错:找不到对称加密的会话密钥包。
const receiverPrivateKey = ...;
const receiverPassphrase = 'secret';
const encryptedMessage = '-----BEGIN PGP MESSAGE----- ... wcBMA0rHUQJA4dCdAQg...';

let privKeyObj = (await openpgp.key.readArmored(receiverPrivateKey)).keys[0];
await privKeyObj.decrypt(receiverPassphrase);

let options = {
    message: await openpgp.message.readArmored(encryptedMessage),
    privateKey: privKeyObj
};

return openpgp.decrypt(options)
    .then((plaintextObject) => {
        return plaintextObject.data; // Hello, World!
    });
var options, encrypted;

options = {
    data: 'Hello, World!',      // input as String
    passwords: ['secret stuff'] // multiple passwords possible
};

openpgp.encrypt(options).then(function(ciphertext) {
    encrypted = ciphertext.data; // '-----BEGIN PGP MESSAGE ... END PGP MESSAGE-----'
});
options = {
    message: openpgp.message.readArmored(encrypted), // parse armored message
    password: 'secret stuff'                         // decrypt with password
};

openpgp.decrypt(options).then(function(plaintext) {
    return plaintext.data; // 'Hello, World!'
});