用GnuPG加密解密你的重要数据

一、介绍

我们都知道,互联网是不安全的,但其上所使用的大部分应用,如Web、Email等一般都只提供明文传输方式(用https、smtps等例外)。所以,当我们需要传输重要文件时,应该对当中的信息加密。非对称密码系统是其中一种常见的加密手段。

GnuPG 是一个用来进行非对称加密(PGP)的免费软件,简称GPG。先说说什么是非对称加密。传统的加密手段往往是使用同一个密码进行加密和解密。例如你加密时 用的密码是“itkylin”,则解密时也要使用“itkylin”才行。这样就存在一个问题,你不能够把一段加密信息发送给你的朋 友。试想,如果采用这种加密方式把信息发送给你的朋友时,你的朋友必须要知道你的密码才能把你的信息解密出来。但你如何保证你的朋友是绝对可靠的呢?也就 是说,如果你的朋友把你的密码告诉了别人,你的密码就不再安全了。

非对称加密采用的是另一种思想。它会给你产生两个密钥,一个称为“公钥”,另一个称为“私钥”。公钥是可以公开的,你尽管把它传给别人;私钥你一定要保管 好不让其他任何人知道。当某人得到你的公钥后,他就可以给你发送加密信息了。具体来说,他把他要发给你的信息用你的公钥加密后发给你,加密的信息只能用你 的私钥去解密。这样,因为世界上除了你以外没有别人知道你的私钥,所以即使别人看到发送给你的加密信息他也无法解密,甚至连发送者本人也不行。因为他不知 道你的私钥。简单说来,就是用公钥去加密;用对应的私钥去解密。想给谁发送加密信息,首先要得到他的公钥。

支持非对称加密的软件有多种,最著名的可能是美国的PGP了,不过它是个商业软件,价格不便宜。对于加密软件,我反对使用破解软件,因为如果信息需要加密 的话,肯定是非常重要的信息,破解软件无法保证加密的安全可靠。因此我建议使用OpenSource的GnuPG软件进行信息的加密和解密。

二、安装相关软件

2.1.请到IT服务实验室(https://www.itkylin.com)的下载中心下载gnupg-w32cli-1.4.11.exegnupgshell-1.0.0.windows.exe

2.2.下载完成后,先安装 gnupg-w32cli-1.4.11.exe,安装完后不用去理它的了。

3.3.然后安装gnupgshell-1.0.0.windows.exe,安装完成后暂不运行,也不做任何设置,直接退出,继续往下看。

三、要使用GnuPG加密,首先需要创建密钥对

 生成密钥对有两种方式:一、通过Dos命令符窗口来创建密钥对;二、直接用GnuPG Shell软件来创建密钥对。建议初级用户用方式二,高级用户可用方式一。但你最终还是要学会进Dos命令符界面去导出你的私钥备分好,因为用GnuPG Shell软件方式我测试只能导出公钥,私钥导不出。当然你也可以通过GnuPG Shell软件来创建密钥对之后,再进入Dos命令符界面去导出你的私钥。不想写的太复杂,下面我们直接以在Dos命令符窗口来创建密钥对为例:

3.1.方式一、通过Dos命令符窗口来创建密钥对:

3.1.1.首先点开始菜单->运行->cmd->回车,打开一个Dos命令符窗口;

3.1.2. 转到GnuPG目录下,如下:

C:\>cd “Program Files\GNU\GnuPG”

3.1.3.到了GunPG目录后执行gpg –gen-key命令开始生成Key如下:

C:\Program Files\GNU\GnuPG>gpg –gen-key

gpg (GnuPG) 1.4.11; Copyright (C) 2010 Free Software Foundation, Inc.

This is free software: you are free to change and redistribute it.

There is NO WARRANTY, to the extent permitted by law.

请选择您要使用的密钥种类:

(1) RSA and RSA (default)

(2) DSA and Elgamal

(3) DSA (仅用于签名)

(4) RSA (仅用于签名)

您的选择?1  ←只有1和2可以用于加密,其他种类只能用于签名,我们选择默认的!

RSA 密钥长度应在 1024 位与 4096 位之间。

您想要用多大的密钥尺寸?(2048)  ←选择密码的位数,位数越大,越安全,但速度越慢

您所要求的密钥尺寸是 2048 位

请设定这把密钥的有效期限。
0 = 密钥永不过期

<n>  = 密钥在 n 天后过期

<n>w = 密钥在 n 周后过期

<n>m = 密钥在 n 月后过期

<n>y = 密钥在 n 年后过期

密钥的有效期限是?(0)  ←根据实际情况选择密钥期限

密钥永远不会过期

以上正确吗?(y/n)y ←确认

您需要一个用户标识来辨识您的密钥;本软件会用真实姓名、注释和电子邮件地址组合成用户标识,如下所示:

“Service Labs(Andy Wang) <[email protected]>”

真实姓名:Andy Wang   ←请填入真实姓名,后面会用到

电子邮件地址:[email protected]  ←邮件作为标记之一,不能重复

注释:My Key  ←仅是注释而已

您选定了这个用户标识:

“Andy Wang (My Key) <[email protected]>”

更改姓名(N)、注释(C)、电子邮件地址(E)或确定(O)/退出(Q)?←输入大写的“O”确认

您需要一个密码来保护您的私钥。   ←输入两次用于访问私钥的密码,紧记,不能公开或丢失

我们需要生成大量的随机字节。这个时候您可以多做些琐事(像是敲打键盘、移动

鼠标、读写硬盘之类的),这会让随机数字发生器有更好的机会获得足够的熵数。

gpg: NOTE: you should run ‘diskperf -y’ to enable the disk statistics

+++++

+++++

我们需要生成大量的随机字节。这个时候您可以多做些琐事(像是敲打键盘、移动
鼠标、读写硬盘之类的),这会让随机数字发生器有更好的机会获得足够的熵数。

gpg: NOTE: you should run ‘diskperf -y’ to enable the disk statistics

……….+++++

gpg: NOTE: you should run ‘diskperf -y’ to enable the disk statistics

..+++++

gpg: 密钥 82B5D773 被标记为绝对信任  ←这个就是密钥ID了,一定要记好!

公钥和私钥已经生成并经签名。

gpg: 正在检查信任度数据库

gpg: 需要 3 份勉强信任和 1 份完全信任,PGP 信任模型

gpg: 深度:0 有效性:  2 已签名:  0 信任度:0-,0q,0n,0m,0f,2u

pub   2048R/720F7F08 2013-05-20

密钥指纹 = 1E00 B5DD C711 64E0 EF28  F215 BCD7 25DD 720F 7F08

uid                  Andy Wang (My Key) <[email protected]>

sub   2048R/AFB35294 2013-05-20

C:\Program Files\GNU\GnuPG>

3.2.方式二、直接用GnuPG Shell软件来创建密钥对

(太简单了,本文不做介绍,请自行摸索吧!)

四、密钥的导出/导入

通过Dos生成了密钥对之后,我们通常需要导出公钥和私钥保存起来,当然公钥是可以满世界的发放,但是私钥请务必保存好,否则你的密钥对将会永久性的失去威力。

4.1.公钥的导出:

C:\Program Files\GNU\GnuPG>gpg -a -o keyfilename –export mykeyID

命令如下:

C:\Program Files\GNU\GnuPG>gpg -a -o mypubkey –export 82B5D773

如果没有mykeyID则是备份所有的公钥,-o表示输出到文件keyfilename中,如果加上-a的参数则输出文本格式( ASCII )的信息,否则输出的是二进制格式信息。

 4.2.私钥的导出(很重要!):

C:\Program Files\GNU\GnuPG>gpg -a -o keyfilename –export-secret-keys mykeyID

命令如下:

C:\Program Files\GNU\GnuPG>gpg -a -o myseckey –export-secret-keys 82B5D773

如果没有mykeyID则是备份所有的私钥,-o表示输出到文件keyfilename中,如果加上-a的参数则输出文本格式的信息,否则输出的是二进制格式信息。

这时你就可以到GnuPG的安装目录(我的是:C:\Program Files\GNU\GnuPG)备份放好你的私钥了,你可以打印成一张A4纸上,然后放到你认为安全的地方,也可以放到U盘、网盘随你了!

4.3.密钥的导入:(由于可通过GnuPG Shell软件来导入密钥,所以此步骤可以忽略,直接跳到第五节)

当你已经导出了公钥和私钥后,你打开GnuPG Shell软件后它就会自动识别到系统已有的密钥的了,你不需要再执行此步骤做密钥的导入。只有你的系统重新安装了,或者重新安装了GnuPG Shell软件,又或者你想在另一台电脑上要加解密你的文件时,你才需要执行密钥的导入,当然,你也可以通过GnuPG Shell软件很方便的导入,也可以通过如下命令执行导入操作:

C:\Program Files\GNU\GnuPG>gpg –import filename

PS:用户可以使用gpg –list-keys命令查看是否成功导入了密钥。

五、通过GnuPG Shell软件来加密解密你的文件

5.1.加密文件:

5.1.1.首先打开GnuPGShell软件,选择你要加密的文件:

5.1.2.选择加密图示:

5.1.3.给你要加密的文件设置密码,这个密码你一定要和私匙一样保存好,不然到时你即使有私匙忘记了密码就恢复不了了,当然,你也可以选择不设密码,这样只要有私匙就可以解密了:

5.1.4.提示encrpted successfully加密成功了!