在PHP中使用加密技术
Gpg4win 是一款基于 GPG 的非对称加密软件。非对称加密方式,简单理解就是用公钥加密文件,用私钥解密文件。如果你需要发送加密信息,首先获取接收者的公钥,然后利用该公钥加密后传递,对方利用对应的私钥就可解密。也就是说,公钥是锁,私钥是钥匙。非对称加密方式很好地解决了传递机密信息的问题。
GPG,又称为 GnuPG,全称是 Gnu Private Guard,即 GNU 隐私卫士。GPG 是以 PGP 算法为核心的强大的加密软件。但 GPG 项目是一套命令行程序,而且是为 Linux 等开源操作系统设计的。好在开发者为 GPG 开发了许多图形前端并将其迁移到 Windows 平台,Gpg4win 就是 Windows 平台 GPG 及图形前端的集合安装包,本文将介绍 Gpg4win 中图形前端的使用方法,不会涉及 GPG 的命令行使用方法。
- 下载安装 Gpg4win
下载地址:gpg4win(gpg加密软件) v2.3.0 官方中文安装版 下载-脚本之家 http://www.jb51.net/softs/447623.html
首先到官方网站下载 Gpg4win,进入下载页面之后点击下载按钮即可下载。
在开始安装 Gpg4win 之前,我们先来了解一下 Gpg4win 是由哪些组件组成的。Gpg4win 的核心是 GPG,并包括 Kleopatra、GPA、GpgOL、GpgEX和Claws Mail 五个相关工具,其中 Kleopatra 和 GPA 是 GPG 的密钥管理器,用于生成、导入和导出 GPG 密钥(包括公钥和私钥),GpgOL 是 Outlook 2003 和 2007 的 GPG 支持插件,GpgEX 是资源管理器的 GPG 支持插件(不支持 Windows 64 位),Claws Mail 则是一个内置 GPG 支持的邮件客户端。本文将介绍 Kleopatra 和 GpgEX 的使用方法。
运行 Gpg4win 安装程序,选择安装组件时建议修改默认设置,默认 Gpg4win 将安装 GnuPG 核心、Kleopatra、GpgOL、GpgEX 以及支持文档(英文和德文)。我推荐只选择 Kleopatra 和 GpgEX。
其余的安装过程保持默认设置即可。安装完成之后安装程序会要求设置信任的根证书,勾选下方的“Root certificate defined or skip configuration”(根证书已定义或跳过设置),该设置只对 S/MIME 加密造成影响,而通常我们使用的是 OpenPGP 标准,即 PGP 算法。最后结束整个安装过程即可。
2. 创建密钥对
GPG 作为非对称加密软件,进行加密解密之前必须生成密钥对,也就是生成对应公钥和私钥。请按以下步骤使用 Kleopatra 生成密钥对:
- 运行Kleopatra,点击File(文件)菜单中的New Certificate(创建新证书)一项,运行Certificate Creation Wizard(证书创建向导)。
- 进入证书类型页面,有两个选项可供选择:第一项是 OpenPGP 密钥对,第二项是 X.509 密钥对及证书。此处我们选择第一项。

3.进入详细信息页面,需要填入密钥对的详细信息,包括Name(姓名)、Email(电子邮箱地址)和Comment(附加信息)三项。点击Advanced Settings(高级设置)按钮,可以对密钥算法和强度以及密钥用途进行设置,为了增强安全性可以在上方的密钥强度中选择最高的3072 bits(3072位),下方的密钥用途设置主要有三个设置:Signing(签名)、Encryption(加密)和Authentication(认证),维持默认设置即可,最后的Valid until选项可以设置密钥到期时间。设置完成点击下一步。

4.最后确认密钥对的相关设置。点击Create Key(创建密钥)按钮,程序将要求输入 Passphrase(密码短语),Passphrase 是使用私钥之前需要输入的密码短语,不过与普通密码相比,Passphrase 长度更长,而且可以包含空格。输入 Passphrase 之后还可以在下图所示的文本框中输入帮助计算机创建更为安全的密钥,输入内容无关紧要,计算机只是利用击键的间歇时间生成随机数,或者也可以移动这一窗口来帮助计算机生成随机数。

5.最后 Kleopatra 将提示创建密钥对完成,下方三个选项是备份密钥对、通过 Email 发送公钥和将公钥上传到服务器,如果不需要执行上述操作点击 Finish(完成)即可。

3. 导入导出公钥
生成密钥对之后,我们必须导出公钥,请按以下步骤导出公钥:
- 在 Kleopatra 主界面中右键点击要导出公钥的密钥对,在右键菜单中选择 Export Certificates(导出证书)。
- 指定公钥的保存路径和文件名称。
除此之外,菜单中其他两项导出选项含义如下:
- Export Secret Keys(导出私钥):用以导出密钥对。
- Export Certificates to Server(导出证书到服务器):用以将公钥导出到服务器上。其他用户可以在存放公钥的公有服务器上搜索公钥并导入,默认的公钥服务器是 keys.gnupg.net。
导入公钥可以通过 File(文件)菜单中的 Import Certificates(导入证书)选项进行,也可以直接利用拖拽操作将公钥文件拖到 Kleopatra 的密钥列表,然后在弹出的菜单中选择 Import Certificates(导入证书)即可。
对于导出到服务器的公钥,选择 File(文件)菜单中的Lookup Certificates on Server(在服务器上搜索公钥)选项,输入 Email 地址点击 Search(搜索)按钮就可以找到对应的公钥,点击 Import(导入)按钮就可以导入公钥。
4. 加密解密文件
导入公钥之后,我们就可以加密文件了。启动加密操作向导有三种途径,一种是在 Kleopatra 主界面中选择 File(文件)菜单中选择 Sign/Encrypt Files(签名/加密文件),一种是将要加密的文件或文件夹拖拽到 Kleopatra 主界面中,然后在弹出的右键菜单中选择 Sign/Encrypt(签名/加密),一种则是在想要加密的文件或文件夹的右键菜单中选择 Sign and encrypt(签名与加密)。这三种途径没有本质区别,除了第一种途径无法选择文件夹因此只能加密文件。下面对加密向导进行介绍:
- 首先是选择操作类型,分别是签名并加密、加密和签名,默认选择的是中间一项加密,最下方的复选框 Remove unencrypted original file when done 是指加密完毕删除源文件,为了保证安全建议选上该项。设置完毕点击Next。

- 现在向导会列出计算机上的所有公钥,请选择正确的公钥并点击中间的 Add(添加)将其添加到下方的列表中,如下图所示:

- 选择完毕点击 Encrypt(加密)按钮开始加密,假如你选择的是他人的公钥,那么 Kleopratra 会弹出对话框提示你加密之后你将不能够解密,点击 Continue 确认,保密完成之后点击 Finish 确认即可。
- 加密完成之后会在源文件所在文件夹生成 .gpg 为扩展名的加密文件,现在你可以把这个文件发给公钥所有者。
接收到已经加密的文件之后应该怎么解密呢?方法和加密非常类似,也是通过向导完成的。启动解密向导的途径同样有三种,一是在 Kleopatra 主界面中选择 File(文件)菜单中选择 Decrypt/Verify Files(解密/验证文件),一是将要解密的文件或文件夹拖拽到 Kleopatra 主界面中,然后在弹出的右键菜单中选择 Decrypt/Verify(解密/验证),一种则是在想要解密的文件或文件夹的右键菜单中选择 Decrypt and verify(解密和验证)。
以上述任意一种方式启动加密向导,点击解密向导对话框的 Decrypt/Verify(解密/验证)按钮,假如弹出对话框,请输入你的私钥的 Passphrase,输入之后点击 OK 就可以使用你的私钥进行解密了,注意在本用户对话期间你再次使用私钥是不需要输入Passphrase的,也就是说,使用私钥之后最好注销一下以保证安全。
GnuPG 和其他加密工具相比,其非对称性加密的特点使其更适合于机密信息的传递。除了加密解密之外,GPG 还可以对文件进行签名和验证,功能非常强大。而且由于 GPG 图形化前端功能的日益完善,GPG 的使用已经不再困难,Gpg4win 已经可以成为大众的加密工具。
在PHP中使用加密技术的更多相关文章
- WANNACRY病毒中的加密技术分析
WANNACRY病毒中的加密技术分析 2019/11/6 16:56:46 分析WANNACRY病毒中的加解密技术的应用.分析内容包括但不限于:对称密码技术和公钥密码技术的作用:受害者支付赎金后就会恢 ...
- php中3DES加密技术
因为工作中要用到加密,接口中要求也是用密文传输数据,用到3des加密,就研究了一下. 在网上也找了好多,但是都不可以用,没法正式运行,终于找到一个可以运行的,自己又修改了一下,记录下来,以后还可能会用 ...
- 非对称加密技术中,iFace [ 爱妃链 ]人脸密钥技术排名第三,将弥补区块链现有不足
最近,区块链领域,出现了一个比较热门技术的讨论,人脸密钥技术,可能大家还对这个名词感到很陌生,但是熟悉加密技术的技术大牛可能一听就能够明白大体的意思了,但是也正是这一熟悉而陌生的技术名词,掀起了区块链 ...
- 浅谈 PHP 中的多种加密技术及代码示例
信息加密技术的分类 单项散列加密技术(不可逆的加密) 属于摘要算法,不是一种加密算法,作用是把任意长的输入字符串变化成固定长的输出串的一种函数 MD5 string md5 ( string $str ...
- AES和RSA混合加密技术在网络数据传输中的应用
原文:http://www.fx361.com/page/2017/0110/519967.shtml 摘要:文章通过分析和比较AES加密算法和RsA加密算法的实现过程和各自的特点, ...
- Android逆向之旅---基于对so中的函数加密技术实现so加固
一.前言 今天我们继续来介绍so加固方式,在前面一篇文章中我们介绍了对so中指定的段(section)进行加密来实现对so加固 http://blog.csdn.net/jiangwei0910410 ...
- PHP加密技术
一.MD5加密 直接干,这里以一个登录页面为例: <?php require_once 'config/database.config.php'; $act=$_REQUEST['act']; ...
- [转]细说SQL Server中的加密
简介 加密是指通过使用密钥或密码对数据进行模糊处理的过程.在SQL Server中,加密并不能替代其他的安全设置,比如防止未被授权的人访问数据库或是数据库实例所在的Windows系统,甚至是数据库所在 ...
- 字符串反混淆实战 Dotfuscator 4.9 字符串加密技术应对策略
因为手头需要使用一个第三方类库,网络上又找不到它的可用的版本,于是只好自己动手.这个类库使用了Dotfuscator 加密,用.NET Reflector加载程序集, 看到的字符串是乱码,如下面的代码 ...
随机推荐
- C#-WebForm-★ASP.NET中的母版页★
何为母版页,顾名思义母版就是模版,就像在PPT里面的板式或主题一样,大框架已经有了,我们的任务就是向里面添加具体的内容.这样我们制作的所有幻灯片的外观大体都是一样的. 在ASP.NET中母版页有两种作 ...
- Django官网案例教程
1.注意:python manage.py runserver 0:8000(侧任何IP均可访问)
- docker 日志管理
高效的监控和日志管理对保持生产系统持续稳定地运行以及排查问题至关重要. 在微服务架构中,由于容器的数量众多以及快速变化的特性使得记录日志和监控变得越来越重要.考虑到容器短暂和不固定的生命周期,当我们需 ...
- 003javascript语句
javascript语句和java差不多,注意==和===区别 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" " ...
- windows下简单配置apache
不得不做个笔记,不然每次配置都记不清楚... 详细的配置朋友这边写的很好.地址 # 对 PHP 4 LoadModule php4_module "c:/php/php4apache2.dl ...
- 2018最新win10 安装tensorflow1.4(GPU/CPU)+cuda8.0+cudnn8.0-v6 + keras 安装CUDA失败 导入tensorflow失败报错问题解决
原文作者:aircraft 原文链接:https://www.cnblogs.com/DOMLX/p/9747019.html 基本开发环境搭建 1. Microsoft Windows 版本 关于W ...
- C#判断字符串中是否包含一个子字符串是可以直接使用Contains()方法
1. 以前判断一个字符串中是否包含另一个子字符串时,习惯使用 IndexOf(); string str = "ABC@QQ"; if(str.IndexOf("@&qu ...
- SQL常用性能相关脚本
--调试语句性能前记得清空执行计划 每次执行需优化SQL前,带上清除缓存的设置SQL. 平常在进行SQL Server性能优化时,为了确保真实还原性能问题,我们需要关闭SQL Server自身的执行计 ...
- Linux原始套接字实现分析---转
http://blog.chinaunix.net/uid-27074062-id-3388166.html 本文从IPV4协议栈原始套接字的分类入手,详细介绍了链路层和网络层原始套接字的特点及其内核 ...
- 嵌套div的margin-top不生效
之前遇到过嵌套div设置margin-top不生效的情况,一直没去研究,今天又遇到了,查阅资料得知原因,并不是margin-top没生效,只是当外层容器跟内层容器之间没有别的元素的时候,内层容器的ma ...