PHP 8.4.0 RC4 available for testing

gnupg_decrypt

(PECL gnupg >= 0.1)

gnupg_decrypt指定されたテキストを復号する

説明

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

事前に gnupg_adddecryptkey で設定されたキーを使用し、指定されたテキストを復号します。

パラメータ

identifier

gnupg_init() あるいは gnupg のコールで得られた gnupg ID。

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;
?>

add a note

User Contributed Notes 5 notes

up
5
yougot at haxed dot com
8 years ago
In regards to Mike's comments around passphrases not working correctly in v2, that's not entirely correct. If you want a PHP file to run without having to manually enter in your PGP passphrase you have to follow the steps outlined @ https://wiki.archlinux.org/index.php/GnuPG#Unattended_passphrase

Hope it helps.
up
3
aidukas at gmail dot com
10 years ago
If empty text is encrypted, the gnupg_decrypt() function will return a boolean FALSE so if you do a strict comparison (===, !==) to track a failure it will trigger you a failure.
For failures use Exceptions:
<?php
$gpg
= new gnupg();
$gpg->seterrormode(gnupg::ERROR_EXCEPTION);
/*
.......further code.......
*/
try {
$string = $gpg->decrypt($stringToDecrypt);
} catch (
Exception $e) {
// do the Error processing
}

?>
up
6
Mike
14 years ago
As of gnupg version 2, it is not possible to pass a plain password any more. The parameter is simply ignored. Instead, a pinentry application will be launched in case of php running in cli mode. In cgi or apache mode, opening the key will fail.
The simplest solution is to use keys without passwords.
up
0
Terra
6 years ago
An update in regards to comments from 'yougot' and 'Mike'.

I have just submitted a pull request that should fix the 'passphrase' issue where the internal callback wasn't being called thereby triggering pinentry.

The pull request is at: https://github.com/php-gnupg/php-gnupg/pull/15

This fix will also work for the current 1.4.0 release: https://github.com/TerraTech/php-gnupg/tree/fix_adddecryptkey_passphrase-1.4.0

Hope that helps.
up
-1
bobby545 at op dot pl
6 years ago
there is mistake in description of object way, it said it is gnu_encrypt example not decrypt
To Top