gpt4 book ai didi

javascript - Openpgp.js 无法解密 pgp 消息

转载 作者:行者123 更新时间:2023-12-03 00:09:58 25 4
gpt4 key购买 nike

我使用的是 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);
});

这会记录加密消息。我现在遇到的问题是无法解密。我现在完全不知所措,说实话,我已经尝试了一切,以至于我不知道自己在做什么。我知道这没什么用处,但我真的没有什么可以提供的。

任何建议都会有很大的帮助!

最佳答案

我认为您混淆了 key 的passphrase和“简单”加密字符串的password
通常,在 PGP 中,发送方使用接收方的公钥加密消息。然后,消息的接收者可以使用他的 secret 密码解密他的私钥,并使用生成的解密后的私钥他可以解密消息

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

加密

const receiverPublicKey = ...;

let publicKeys = (await openpgp.key.readArmored(receiverPublicKey)).keys;
let options = {
data: 'Hello, World!',
publicKeys: publicKeys
};

return openpgp.encrypt(options)
.then((encryptedMessageObject) => {
return encryptedMessageObject.data; // -----BEGIN PGP MESSAGE----- ... wcBMA0rHUQJA4dCdAQg...
});

解密

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!
});

这是使用 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!'
});

在本例中,密码用于加密和解密消息 - 根本不需要公钥或私钥。

希望对您有所帮助!

关于javascript - Openpgp.js 无法解密 pgp 消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54785242/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com