PHP GPG 加密实践

这篇博客介绍了在PHP中使用GPG加密协议的基本概念和操作步骤,包括非对称加密、密钥对、公钥和私钥的用途、Linux与Windows环境下GPG的安装和使用,以及在PHP中进行GPG加密和签名的注意事项,如避免使用密码保护私钥,通过Linux定时任务解决权限问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

近期搞一些外部 对接. 对方是Java程序,使用的是GPG加密协议.


关于GPG的资料较多,但如果想在PHP中使用,就比较 复杂了.


先讲解一些基本概念,别的文章中都把这些基本概念忽略了,认为大家都知道,实际我们小白程序员通常是没接触过的.


1.GPG的别名是GnuPG,  是一个 非对称加密协议.  每一个密钥包括一个公钥,一个私钥.

2.通常 公钥是用来加密的,私钥是用来签名的.

3.A向B发送一个密文时有以下三种方式

    3.1 把明文通过B的公钥进行加密,发送给B.   以保证 除了B,没有别人能解开.

    3.2 把明文通过A的私钥进行签名,发送给B.  以保证 这密文一定是A发送的,别人无法伪造.

    3.3 把明文通过B的公钥进行加密,再通过A的私钥签名,以保证 这东西一定是A发送的,并且只有B能解开.

4.CentOS中 gpg是默认安装的, 如果别的Linux系统,请自行安装,

   Windows下,请安装gpg4win 软件.  其中的4 表示  for 

 5.PHP 需要安装 GPG扩展, 只有LINUX下才有此扩展.  Windows下没找到安装方法.

    我是搞了个CentOS虚拟机进行的开发 测试.

6. 每个密钥有以下四部分概念

    6.1  公钥 pub   代表public key

    6.2 私钥 sec  代表 secret key

    6.3 子公钥 sub

    6.4 子私钥 ssb

7.在Linux上,GPG密钥是绑定到ROOT用户和操作系统上的.

    所以,开发测试时,要使用ROOT用户登录

8. GPG 命令

     gpg -k    查看全部公钥

     gpg -K  查看全部私钥

     查询 结果 中包含当前已经绑定到操作系统中的 密钥

         有些只有公钥,有些只有私钥,有些同时有公钥和私钥.

9.指定一个密钥时, 可以用 KEY (即1024b/后面的那些 十六进制),也可以用标识(即 邮箱前面的那个英文单词,创建时指定的)

10.密钥在传递时,是以文件形式进行的, 有两种格式: 二进制,ASCII码

 11.导入, 可以把密钥绑定到操作系统 上,

     导出,可以从操作系统 上把密钥变成文件 ,可指定格式(二进制,ASCII)

 12.还有个密码的概念,请注意. 

      密码是用来保护私钥的. (再一次保护). 

     即,使用私钥签名时,需要ROOT用户在界面中输入密码.  并且,无法使用 输入转向来自动指定密码.

13.以上解释了各种概念. 其它的百度都有.


下面来说,如何用PHP来GPG 加密 和签名

要点1. 公钥和私钥,请导出成文件,两种格式都可.  PHP可以自动识别,都认识.

要点2. 不要对私钥使用密码进行保护. 因为密码必须人工输入. 保护好你的密钥文件吧. 服务器别被人入侵.

要点3. 由于GPG函数的运行只能在ROOT用户下进行, 而PHP的WEB服务器(Nginx/Apache)并不是ROOT用户.

    我们也不想给Web用户提升权限.

    那么怎么办?



    LINUX系统的定时任务Crontab启动的任务可以使用ROOT权限

    那么 我们搞个定时任务要执行的PHP程序即可

    命令行下 使用 PHP  ****.php  测试,如果执行成功,  那么 把这个放到定时任务里即可.

    定时策略自行规划.


   如果使用GPG过程中遇到问题,联系我吧  Q:31008088


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值