2017-11-14 5 views
1

私はgnupgを使ってファイルを暗号化して解読しようとしています。奇妙なことは、暗号化は正常に動作しますが、decryptは常にfalseを返します。ここでPHP gnupg enryptは動作しますが、復号化しません

コンテンツ暗号化および復号化の単純なPHPスクリプト:

$content = 'test text'; 
putenv("GNUPGHOME=/PATH_TO_GPG_PATH"); 
$gpg = new gnupg(); 
$gpg->addencryptkey("FINGERPRINT"); 
$enc = $gpg->encrypt($content); 

var_dump($enc); 

$gpgD = new gnupg(); 
$gpgD->adddecryptkey("FINGERPRINT","PASSPHRASE"); 
$plain = $gpgD->decrypt($enc); 
var_dump($plain); 

バージョン

Debianパッケージを

GPGV 1.4.18-7

libgpgme11:AMD64 1.5.1 -6

PECL

パッケージのバージョン州立 のGnuPG 1.4.0安定

PHPのバージョン: PHP 7.1.11-1 + 0〜+ 20171027135825.10ジェシー〜1.gbp2e638d

誰もがこの問題を経験しました既に?私はアイデアがありません。 ありがとうございます。

+0

https://secure.php.net/manual/en([ 'gnupg_geterror']とは何ですか/function.gnupg-geterror.php)? –

+0

復号化に失敗しました。 shell_exec()でplain decryptコマンドを使用して回避策を作成しました。なぜプレーン復号化がPHPベースの暗号化方式で動作するのだろうか? : - / –

答えて

2

gnupg_adddecryptkey()の後にgnupg_geterror()を呼び出してみましたか?あなたの秘密鍵が実際に受け入れられていないと思われます。私はそれがPHPユーザーのGPGキーリングにある必要があると仮定?また、いくつかの簡単なテストでは、端末のパスフレーズの入力を求められましたが、それは私のパラノイアのgpg config(パスフレーズキャッシングを完全に無効にするため)の可能性があります。エラーをトラップする別の方法は、実際に何が起こっているか見るためにERROR_EXCEPTIONまたは同様にgnupg_seterrormode()を設定することです

...

関連する問題