使用OpenPGPJ解密返回空

时间:2018-12-24 09:47:57

标签: javascript encryption rsa pgp openpgp.js

我正在尝试使用OpenPGPJ解密文本。 该消息是使用以下命令通过gpg使用4096位RSA密钥生成的:

  

gpg --encrypt --armor -r myemail@pm.com test.txt

我遵循了OpenPGPJS文档,但是以下代码返回了一个空的解密对象,如下所示:

  

{纯文本:{签名:[],数据:”,文件名:null}}

const pubKey = `-----BEGIN PGP PUBLIC KEY BLOCK-----
...
-----END PGP PUBLIC KEY BLOCK-----`

const privKey = `-----BEGIN PGP PRIVATE KEY BLOCK-----
...
-----END PGP PRIVATE KEY BLOCK-----`

const encryptedText = `-----BEGIN PGP MESSAGE-----
...
-----END PGP MESSAGE-----`

const passphrase = 'my password'

export const decryptFunc = async() => {
  try{
    const privateKey = (await openpgp.key.readArmored(privKey)).keys[0]
    await privateKey.decrypt(passphrase)

    const options = {
      message:  await openpgp.message.readArmored(encryptedText),
      publicKeys: (await openpgp.key.readArmored(pubKey)).keys,
      privateKeys: privateKey,
    }

    return openpgp.decrypt(options).then(plaintext => {
        console.log({plaintext})
        return plaintext.data
    })

  }catch(error) {
    console.log({error});
  }
}

解密后的消息不应为空,库也不会抛出任何异常,此外,我还可以使用GPG对消息进行解密:

  

gpg --decrypt test.txt.asc

我做错了吗?

0 个答案:

没有答案