©
本文檔使用 php中文網手册 發布
(PECL gnupg >= 0.1)
gnupg_decrypt — Decrypts a given text
$identifier
, string $text
)Decrypts the given text with the keys, which were set with gnupg_adddecryptkey before.
identifier
gnupg 标识符,由对 gnupg_init() 或 gnupg 的调用生成。
text
The text being decrypted.
On success, this function returns the decrypted text.
On failure, this function returns FALSE
.
Example #1 Procedural gnupg_decrypt() example
<?php
$res = gnupg_init ();
gnupg_adddecryptkey ( $res , "8660281B6051D071D94B5B230549F9DC851566DC" , "test" );
$plain = gnupg_decrypt ( $res , $encrypted_text );
echo $plain ;
?>
Example #2 OO gnupg_encrypt() example
<?php
$gpg = new gnupg ();
$gpg -> adddecryptkey ( "8660281B6051D071D94B5B230549F9DC851566DC" , "test" );
$plain = $gpg -> decrypt ( $encrypted_text );
echo $plain ;
?>
[#1] aidukas at gmail dot com [2014-04-01 09:02:47]
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);
try {
$string = $gpg->decrypt($stringToDecrypt);
} catch (Exception $e) {
// do the Error processing
}
?>
[#2] Mike [2010-01-28 03:26:43]
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.