2024年PHP开发者大会日本站

gnupg_decrypt

(PECL gnupg >= 0.1)

gnupg_decrypt解密给定的文本

描述

gnupg_decrypt(资源 $identifier, 字符串 $text): 字符串|false

使用之前用 gnupg_adddecryptkey 设置的密钥解密给定的文本。

参数

identifier

gnupg标识符,来自对gnupg_init()gnupg的调用。

text

要解密的文本。

返回值

成功时,此函数返回解密后的文本。失败时,此函数返回 false

示例

示例 #1 过程式 gnupg_decrypt() 示例

<?php
$res
= gnupg_init();
gnupg_adddecryptkey($res,"8660281B6051D071D94B5B230549F9DC851566DC","test");
$plain = gnupg_decrypt($res,$encrypted_text);
echo
$plain;
?>

示例 #2 面向对象 gnupg_decrypt() 示例

<?php
$gpg
= new gnupg();
$gpg->adddecryptkey("8660281B6051D071D94B5B230549F9DC851566DC","test");
$plain = $gpg->decrypt($encrypted_text);
echo
$plain;
?>

添加笔记

用户贡献笔记 5 条笔记

yougot at haxed dot com
8年前
关于Mike关于v2中密码短语无法正常工作的评论,这并不完全正确。如果您希望PHP文件无需手动输入PGP密码即可运行,则必须按照@ https://wiki.archlinux.org/index.php/GnuPG#Unattended_passphrase 中概述的步骤操作。

希望能帮到您。
aidukas at gmail dot com
10年前
如果加密空文本,gnupg_decrypt()函数将返回布尔值FALSE,因此如果您进行严格比较(===,!==)来跟踪失败,它将触发失败。
对于失败,请使用异常
<?php
$gpg
= new gnupg();
$gpg->seterrormode(gnupg::ERROR_EXCEPTION);
/*
.......更多代码.......
*/
try {
$string = $gpg->decrypt($stringToDecrypt);
} catch (
Exception $e) {
// 执行错误处理
}

?>
Mike
14年前
从gnupg 2版开始,不再可以传递普通密码。该参数被简单地忽略。如果php在cli模式下运行,则将启动pinentry应用程序。在cgi或apache模式下,打开密钥将失败。
最简单的解决方案是使用没有密码的密钥。
Terra
6年前
关于“yougot”和“Mike”评论的更新。

我刚刚提交了一个拉取请求,应该可以修复内部回调未被调用从而触发pinentry的“密码短语”问题。

拉取请求位于: https://github.com/php-gnupg/php-gnupg/pull/15

此修复程序也适用于当前的1.4.0版本: https://github.com/TerraTech/php-gnupg/tree/fix_adddecryptkey_passphrase-1.4.0

希望能帮到您。
bobby545 at op dot pl
6年前
对象方法的描述中存在错误,它说这是gnu_encrypt示例而不是解密
To Top