我正在尝试使用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>';
答案 0 :(得分:0)
我解决了我的问题。它是由gnupg v2中的更改引起的。问题是使用了密钥密码。可以通过将pgp配置为无人照管的密码来解决。在phpt.net上查看“ yougot@haxed.com”的评论。