用GnuPG进行信息加密和解密

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

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

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

首先去GnuPG的官方网站下载你的操作系统的软件包()。 然后按照安装向导进行安装。有一步是让你选择语言的,建议选择zh_CN – Chinese (simplified),这样会使GnuPG的输出信息为中文。默认的安装目录是C:Program FilesGNUGnuPG,建议把它加入到PATH环境变量中去。因为GnuPG是一个命令行的软件,将安装目录加入PATH后使用会方便得多。

接下来该使用GnuPG来生成你的公钥和私钥了。打开命令提示符,输入gpg –gen-key。GnuPG会提示你 选择密钥的种类,这里选择默认的第一项“DSA 和 ElGamal”,其他两个都只能用于签名而不能用来加密。按回车接受默认选择。接下来让你设置密钥的长度,数值在1024到4096位之间。长度越长, 安全程度越高,但相应的加密和解密时的计算量也就越大。其实即使是最小值1024位,估计用大型计算机去破解的话也得用好几个月的时间。默认长度是 2048位,足够安全了。然后设置你的密钥有效期,按照提示输入,0表示永不过期。后来确认无误后,输入y确定。

接着输入你的姓名、电子邮件和注释。这些信息将用来标识你的身份。然后按O确认。接着设置你的私钥密码。注意这个密码并不等同于你的私钥,它只是用 来保护私钥不会被其他人利用。私钥是一个很大的整数,你通常是不会去记住的。但当你需要用私钥去解密信息时,GnuPG会提示你输入密码,只有密码输对 了,GnuPG才会去读取你的私钥去解密信息。

输入完两次密码后,GnuPG会提示你动动鼠标键盘之类的,以便产生一个“足够随机”的随机数,最终生成一对公钥和私钥。

至此,一对儿密钥已经产生了。你需要把公钥告诉你的朋友。怎么样得到自己的公钥呢?用gpg的–export选项。下面这个命令会输出我的公钥(假定我在上面生成密钥时设定的姓名为“Wang Jinbo”):
gpg –export “Wang Jinbo”
你看到的应该是一大堆乱码,这其实就是公钥。如果希望公钥看起来整齐一些,可以使用-a选项设置输出为ASCII字符:
gpg –export -a “Wang Jinbo”

把上面的输出重定向到一个文件中去,例如wang.key:
gpg –export -a “Wang Jinbo” > wang.key
这样,wang.key这个文件就是我的公钥了,我可以把它放到我的网站上或者通过电子邮件发送给我的朋友们。

如果你得到了我的公钥,如何用它去加密呢?首先你需要导入我的公钥文件。
gpg –import wang.key
这会将我的公钥导入到你的“钥匙环”中。这样以后你就可以用我的公钥给我发送加密信息了。下面是具体的做法。

假设你给我发送的信息是hello.txt这个文件。现在用GnuPG来加密:
gpg -e -r “Wang Jinbo” hello.txt
这会在当前目录下生成hello.txt.gpg这个文件,这个就是就是hello.txt被加密后的结果。你可以用记事本打开看看,应该是一大堆无意义的乱码。然后你就可以把这个文件通过电子邮件发到我的邮箱中去。我收到后,用下面的方法去解密。
gpg -d hello.txt.gpg
GnuPG会提示我输入密码,也就是我在gpg –gen-key中设定的密码。密码输入完后,GnuPG会在屏幕上立刻显示出解密以后的内容。如果被加密的不是文本内容,比如是一个图片,则可以将输出重定向到一个文件中去:
gpg -d hello.png.gpg > hello.png

转自:http://hi.baidu.com/zhishang18/item/078c65cf4b6c5c0bc610b22d

发表评论

电子邮件地址不会被公开。 必填项已用*标注

跳至工具栏