Я думаю, что вы смешиваете passphrase
для ключа и password
для "простого" шифрования строки.
Обычно в PGP отправитель шифрует сообщение с открытый ключ получателя .Получатель сообщения может затем дешифровать свой закрытый ключ с помощью своей секретной парольной фразы и с помощью полученного расшифрованного секретного ключа он может дешифровать сообщение .
Я добавил рабочий пример ниже:
Шифрование
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 с одним отправителем и одним получателем (обратите внимание, что signing
сообщения и checking the signature
отсутствуют).
Теперь в расшифровке также есть password
options
.
Для этого см. Пример из документов:
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!'
});
В этом случае password
используется для шифрования и дешифрования сообщения - вообще никакого открытого или закрытого ключа.
Надеюсь, это поможет!