GnuPG 是 RFC4880 OpenPGP 标准 PGP 的完整实现,自由软件。GnuPG 能够加密和签名数据和信息传递,包含一个通用的密钥管理系统,包含的访问模块能够访问各类公钥目录。 GnuPG, 简称 GPG, 是命令行工具,很方便和其它程序进行整合,具备不少前端程序和函数库。 GnuPG V2 还支持 S/MIME 和 Secure Shell (ssh). 更多详细介绍点击这里php
目前该扩展没有找到windows版本,是在linux系统centos7安装测试的前端
wget https://pecl.php.net/get/gnupg-1.4.0.tgz
复制代码
tar xvf gnupg-1.4.0.tgz
复制代码
cd gnupg-1.4.0
复制代码
/www/server/php/72/bin/phpize //用本身的phpize路径
复制代码
./configure --with-php-config=/www/server/php/72/bin/php-config //用本身的php-config路径
复制代码
make && make install
复制代码
echo "extension = gnupg.so" >> /www/server/php/72/etc/php.ini //用本身的php.ini路径
复制代码
若是checkconfig时报错please reinstall the gpgme distribution(请从新安装gpgme发行版),以下图 linux
yum install gpgme-devel
安装便可!
验证扩展是否安装成功:在页面打印出phpinfo,搜索gnupg,搜到说明安装成功! windows
网上有不少教程能够参考这里,这里主要说下碰见的问题:centos
yum -y install rng-tools
rngd -r /dev/urandom
复制代码
//加密
$gpg = new gnupg();
$gpg->seterrormode(gnupg::ERROR_EXCEPTION);
$pubinfo = $gpg->import(file_get_contents('public-key.txt'));//导入公钥
$text =
"Dear All,\n The answer is 42.\n Wangff";
try {
$gpg->addencryptkey($pubinfo['fingerprint'], '');
$encrytext = $gpg->encrypt($text);
echo $encrytext;
file_put_contents('test.gpg', $encrytext);
} catch (Exception $e) {
die('ERROR: ' . $e->getMessage());
}
复制代码
//解密
$gpg = new gnupg();
$gpg->seterrormode(gnupg::ERROR_EXCEPTION);
$priinfo = $gpg->import(file_get_contents('private-key.txt'));//导入私钥
$text = file_get_contents('test.gpg');
try {
$gpg->adddecryptkey($pubinfo['fingerprint'], '');
$decrytext = $gpg->decrypt($text);
echo $decrytext;
} catch (Exception $e) {
echo 'ERROR: ' . $e->getMessage();
}
复制代码