用php进行pgp加密“解密失败”

时间:2018-07-20 13:11:02

标签: php encryption gnupg pgp openpgp

我正在尝试使用php加密和解密文件。这些文件应使用pgp异步解密。

当我使用默认的gnupg-php-functions时,加密效果很好。我可以在控制台上解密它。如果我尝试用php解密它,我总是会得到一个不确定的异常:“解密失败”

我也尝试过使用不同的键。我还使用了另一个库“ singpolyma / openpgp-php”。

可能出什么问题了?

$sMessage = 'Huhu';
$recipient = 'test@email.com';
$sPassword = '1234';

// initialize PGP
putenv("GNUPGHOME=".__DIR__."/.pgp/");
$oPgp = new gnupg();
$oPgp->import($sPublicKey);
$oPgp->seterrormode(GNUPG_ERROR_EXCEPTION);
$oPgp->import($sPublicKey);
$oPgp->addencryptkey($recipient);

$ciphertext = $oPgp->encrypt($sMessage);
echo '<pre>'.$ciphertext.'</pre>';
file_put_contents('/tmp/ciphertext.gpg', $ciphertext);

// create new GnuPG object
$gpg = new gnupg();
$gpg->import($sPrivateKey);

// throw exception if error occurs
$gpg->seterrormode(gnupg::ERROR_EXCEPTION);

// ciphertext message
$gpg->adddecryptkey($recipient, $sPassword);
$plaintext = $gpg->decrypt($ciphertext);
echo '<pre>' . $plaintext . '</pre>';

1 个答案:

答案 0 :(得分:0)

我解决了我的问题。它是由gnupg v2中的更改引起的。问题是使用了密钥密码。可以通过将pgp配置为无人照管的密码来解决。在phpt.net上查看“ yougot@haxed.com”的评论。