gnupg_decrypt
(PECL gnupg >= 0.1)
gnupg_decrypt — Decrypts a given text
Description
string gnupg_decrypt
( resource
$identifier
, string $text
)Decrypts the given text with the keys, which were set with gnupg_adddecryptkey before.
Parameters
-
identifier
-
The gnupg identifier, from a call to gnupg_init() or gnupg.
-
text
-
The text being decrypted.
Return Values
On success, this function returns the decrypted text.
On failure, this function returns FALSE
.
Examples
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;
?>
- PHP Руководство
- Функции по категориям
- Индекс функций
- Справочник функций
- Генерация нетекстовых MIME форматов
- GNU Privacy Guard
- gnupg_adddecryptkey
- gnupg_addencryptkey
- gnupg_addsignkey
- gnupg_cleardecryptkeys
- gnupg_clearencryptkeys
- gnupg_clearsignkeys
- gnupg_decrypt
- gnupg_decryptverify
- gnupg_encrypt
- gnupg_encryptsign
- gnupg_export
- gnupg_geterror
- gnupg_getprotocol
- gnupg_import
- gnupg_init
- gnupg_keyinfo
- gnupg_setarmor
- gnupg_seterrormode
- gnupg_setsignmode
- gnupg_sign
- gnupg_verify
Коментарии
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.
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
}
?>
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.
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.
there is mistake in description of object way, it said it is gnu_encrypt example not decrypt