GPG,又称为GnuPG,全称是Gnu Private Guard,即GNU隐私卫士。GPG是以PGP算法为核心的强大的加密软件。但GPG项目是一套命令行程序,而且是为 Linux 等开源操作系统设计的。那么在Windows平台下如何使用GPG呢?不用担心,Gpg4win就是Windows平台GPG及图形前端的集合安装包。

简单介绍一下,Gpg4win是一款非对称加密方式软件。简单来讲,就是用公钥加密文件,用私钥解密文件。如果你需要发送加密信息,首先获取接收者的公钥,然后利用该公钥加密后传递,对方利用对应的私钥就可解密。也就是说,公钥是锁,私钥是钥匙。非对称加密方式很好地解决了传递机密信息的问题。

下载安装Gpg4win

请到官方网站下载:http://www.gpg4win.org/
之后运行安装程序,保持默认设置即可。安装完成后会要求设置信任的根证书,勾选下方的Root certificate defined or skip configuration(根证书已定义或跳过设置)即可。

创建密钥对

  1. 运行Kleopatra,点击File – New Certificate,会弹出Certificate Creation Wizard(证书创建向导)
  2. 选择第一项 Create a personal OpenPGP key pair。
  3. 填入Name(姓名)、Email(电子邮箱地址)和Comment(附加信息)。
  4. 点击Advanced Settings,可以进行高级设置,为了增强安全性,建议选择最长的4096 bits,其余维持默认设置即可。
  5. 点击Create Key,之后输入Passphrase,点击OK。请牢记Passphrase,因为在使用自己的私钥时需要输入Passphrase。
  6. 在创建的过程中,可以在下图所示的文本框中随意打字或者移动这一窗口,计算机将利用IO生成随机数。
  7. 创建完成后,下方有三个选项是:备份密钥对、通过Email发送公钥、将公钥上传到服务器。如果不需要执行上述操作,点击Finish即可。

导入导出秘钥

公钥加密,私钥解密。如果想要别人给你发送加密信息,别人就要知道你的公钥才行。公钥之所以称为公钥,就是因为它是公开的。接下来,我们需要把自己的公钥公之于众,上传到专门的服务器上。这里以上传到MIT的PGP公钥服务器为例。

  1. 在Kleopatra主界面右键点击要导出的秘钥,点击Export Certificates,输入保存路径和文件名,点击保存后会得到一个asc文件。
  2. 使用文本编辑器打开刚才生成的asc文件,复制全部内容。
  3. 使用浏览器访问MIT的PGP公钥服务器http://pgp.mit.edu/,将刚才复制的内容黏贴到“Submit a key”下方的文本框里,点击Submit this key to the key server!。上传成功后,别人搜索你的邮箱即可获取你的公钥。

反过来,如果你想给别人发送加密信息,就需要获取他的公钥。假如我想发送给neo.q.zhang@gmail.com,则需要通过以下步骤获取相应的公钥。

  1. 使用浏览器访问MIT的PGP公钥服务器http://pgp.mit.edu/,在“Extract a key”下方的文本框输入neo.q.zhang@gmail.com,如下图所示。之后点击Do the search!。
  2. 在搜索结果页中点击相应的keyID,会进入一个有一长串乱码的页面。复制该页面的全部内容。
  3. 打开文本编辑器,黏贴刚才复制的内容,保存。文件名随意,例如“neo.asc”。
  4. 在Kleopatra主界面点击Import Certificates,选择刚才保存的文件,点击打开。这样就成功导入了一个公钥。

加密文本

下面的例子将演示如何加密一段文本并通过邮件发送给别人。

  1. 打开文本编辑器,输入你想要加密的文本(即原文),保存。文件名随意,例如“send.txt”。
  2. 在Kleopatra主界面点击 File – Sign/Encrypt Files,选择刚才保存的文件。
  3. 之后弹出的窗口中间有3的选项,分别是签名并加密(Sign and Encrypt (OpenPGP only))、加密(Encrypt)、签名(Sign)。这里我们选择默认选项——加密(Encrypt)。
  4. 因为我们要通过邮件发送纯文本,勾选Text output(ASCII armor)。点击Next。
  5. 之后从上方的列表中选择接受方的公钥(前提是你已经导入了接收方的公钥),点击Add添加到下方列表。点击Ecrypt开始生成密文。
  6. 密文生成后,点击Finish。
  7. 在和原文同一路径下找到刚生成的密文“send.txt.asc”。用文本编辑器打开,复制全部内容。
  8. 将刚才复制的密文发送给接收方,就像平时发邮件一样。

解密文本

下面的例子将演示如何解密一封收到的密文。

  1. 复制收到的密文。打开文本编辑器,粘贴,保存。文件名随意,例如“receive.txt”。
  2. 在Kleopatra主界面点击 File – Decrypt/Verify Files,选择刚才保存的文件。
  3. 选择输出的路径,默认是和密文同一路径,点击Decrypt/Verify。
  4. 之后会要求你输入passphrase,就是我们在创建密钥时输入的那个。点击确定。
  5. 解密完成后,点击OK。
  6. 在输出路径找到解密后的文件“receive.txt.out”,用文本编辑器打开即可看到原文。
 
 
注:原文见我的博客《在Windows系统使用Gpg4win进行加密解密

在Windows系统使用Gpg4win进行加密解密的更多相关文章

  1. 重新想象 Windows 8 Store Apps (32) - 加密解密: 非对称算法, 数据转换的辅助类

    原文:重新想象 Windows 8 Store Apps (32) - 加密解密: 非对称算法, 数据转换的辅助类 [源码下载] 重新想象 Windows 8 Store Apps (32) - 加密 ...

  2. 重新想象 Windows 8 Store Apps (31) - 加密解密: 哈希算法, 对称算法

    原文:重新想象 Windows 8 Store Apps (31) - 加密解密: 哈希算法, 对称算法 [源码下载] 重新想象 Windows 8 Store Apps (31) - 加密解密: 哈 ...

  3. 与众不同 windows phone (28) - Feature(特性)之手机方向, 本地化, 应用程序的试用体验, 系统主题资源, 本地数据的加密解密

    原文:与众不同 windows phone (28) - Feature(特性)之手机方向, 本地化, 应用程序的试用体验, 系统主题资源, 本地数据的加密解密 [索引页][源码下载] 与众不同 wi ...

  4. Windows系统因“CredSSP加密Oracle修正”无法远程连接

    解决办法如下: 在电脑本机运行(快捷键 Win+R)输入:gpedit.msc 回车: 计算机配置->管理模板->系统->凭据分配->右侧找到“加密Oracle凭据”双击-&g ...

  5. php rsa加密解密实例

    1.加密解密的第一步是生成公钥.私钥对,私钥加密的内容能通过公钥解密(反过来亦可以) 下载开源RSA密钥生成工具openssl(通常Linux系统都自带该程序),解压缩至独立的文件夹,进入其中的bin ...

  6. 使用 GPG 对数据进行加密解密签名

    一:使用 GPG 对数据进行加密解密签名 基本的工具使用 1. GPG 是GNUPG 免费开源的gpg加密工具,和同pgp兼容,pgp收费. 2. 在mac上使用https://gpgtools.or ...

  7. C#_加密解密

    一.MD5加密解密 1.加密 public static string ToMd5(string clearString) { Byte[] clearBytes = System.Text.Enco ...

  8. ASP.NET常用加密解密方法

    ASP.NET常用加密解密方法 一.MD5加密解密 1.加密 C# 代码           public static string ToMd5(string clearString)        ...

  9. Java加密解密与数字证书的操作

    1 keytool命令总结 一.创建数字证书 交互模式 使用默认的密钥库.keystore(文件夹是c: Documents and Settingusername)和算法(DSA) keytool  ...

随机推荐

  1. koa2 源码解读 application

    koa2的源码比较简单,重点解读aplication, 其中context源码比较简单,主要是一些error cookies等,重点可以关注下delegate,delegate模块中,主要通过prot ...

  2. sql server 2008查询时报错,消息:8155,没有为'a'的列2指向任何列

    解决方法1: 关掉Sql Server再打开, 重新查询 解决方法2: select T.* from(   select row_number() over(order by age desc) a ...

  3. CSS基础--属性选择器、伪类选择器

    属性选择器 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF ...

  4. Excelvba从另一个工作簿取值

    Private Sub getValue_Click() Dim MyWorkbook As Workbook Set MyWorkbook = Application.Workbooks.Open( ...

  5. Mysql 在 select 查询时追加(添加)一个字段并指定值

    在特定时候,在 mysql 的查询结果中我们需要追加一个字段来实现某些特定的功能,这时我们可以用到以下语法来实现 值 as 字段比如我们需要给这个查询结果追加一个 xx 字段并赋值为 null ,可以 ...

  6. 解决Ubuntu12.04下rpcbind: cannot open '/var/run/rpcbind/rpcbind.xdr' file for reading

    不知道怎么回事,实验室的电脑在同学搞过之后,每次启动都报错 rpcbind: cannot open '/run/rpcbind/rpcbind.xdr' file for reading, errn ...

  7. 细聊Spring Cloud Bus

    细聊Spring Cloud Bus Spring 事件驱动模型 因为Spring Cloud Bus的运行机制也是Spring事件驱动模型所以需要先了解相关知识点: 上面图中是Spring事件驱动模 ...

  8. AJAX 获取Servlet文件路径

    下面均不行: xmlRes.open("get","edu/hust/ajax/TestServlet",true); xmlRes.open("ge ...

  9. Mysql一些概念,基本没啥用,

    关系型数据库管理系统(RDBMS):是建立在关系模型基础上的数据库,借助于集合代数等数学概念和方法来处理数据库中的数据.特点:1.数据以表格的形式出现2.每行为各种记录名称3.每列为记录名称所对应的数 ...

  10. NGUI的widget的使用

    一,我们看看widget有什么属性,如下图: 二,Pivot是什么意思? 我们都知道在Untiy3D中有一个中央坐标点,而这个Pivot这个就是选择控件的某一个点与中央坐标点定位. 如下图区别: 当你 ...