gnupg_decrypt

(PECL gnupg >= 0.1)

gnupg_decrypt解密给定的文本

描述

gnupg_decrypt(resource $identifier, string $text): string|false

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

参数

identifier

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

text

要解密的文本。

返回值

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

示例

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

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

示例 #2 OO 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);
/*
.......further code.......
*/
try {
$string = $gpg->decrypt($stringToDecrypt);
} catch (
Exception $e) {
// do the Error processing
}

?>
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
5 年前
对象方式的描述有误,它说它是 gnu_encrypt 示例,而不是解密
To Top