欢迎各位兄弟 发布技术文章

这里的技术是共享的

You are here

GnuPG的使用简介

shiping1 的头像

  GnuPG是GNU项目中的一员,是信息加密技术中,最朴实和平民化的工具,我们在之后将其简称为gpg,这实际上也就是GnuPG的命令。GnuPG的项目主页在:(英语好的同学就直接去学习吧^^)

http://www.gnupg.org/

    我这里主要是讲在Windows下的使用,用Linux的同学,比如像Debian(包括Ubuntu)这些,gpg是本来就安装好的,并且跟电子邮件软件都是集成得很好的。因为既然你都玩Linux了,相信看doc的能力应该是有的,参考一下在Windows下的方法就可以了,我就不专门写在Linux下的设置和使用了。

    gpg的主页不提供gpg的下载,这是因为美国的法律是限制加密技术出口的。所以,gpg主页上只提供了其他国家服务器上下载的镜像链接,比如我,就是在这里下载的:

ftp://ftp.gnupg.ca/binary/gnupg-w32cli-1.4.9.exe

    然后就一路安装,默认的安装路径是:

C:\Program Files\GNU\GnuPG

    因为我尽量希望把这个教程写得傻瓜一点,所以,很多地方我就不解释为什么了,最简单的使用就是跟着我一步步来。

    安装好以后,我们需要一个地方作为gpg的工作目录,随便找个地方建立个文件夹就可以了,比如“我的文档”是个好地方,比如就这个位置:

??\My Documents\gpg

在这个文件夹里面创建一个文本文件,然后更名为一个批处理文件,比如startgpg.bat,文件内容如下:

@set path=C:\Program Files\GNU\GnuPG;%PATH%;
@echo ---**欢迎使用gpg加密系统**---
@echo 帮助请用命令gpg -h
@cmd

其实就是临时指定了gpg命令的路径。

运行startgpg.bat,你就进入一个“命令与提示符”窗口了。你可以先使用gpg -h看看帮助信息。

 

现在,我们开始制作一把密钥。这里是一次产生钥匙的全过程:

 

---**欢迎使用gpg加密系统**---
帮助请用命令gpg -h
Microsoft Windows [版本 5.2.3790]
(C) 版权所有 1985-2003 Microsoft Corp.

E:\My Documents\gpg>gpg --gen-key //产生钥匙的命令
gpg (GnuPG) 1.4.9; Copyright (C) 2008 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) DSA 和 ElGamal (默认)
   (2) DSA (仅用于签名)
   (5) RSA (仅用于签名)
您的选择? 1
DSA 密钥对会有 1024 位。
ELG-E 密钥长度应在 1024 位与 4096 位之间。
您想要用多大的密钥尺寸?(2048)
您所要求的密钥尺寸是 2048 位
请设定这把密钥的有效期限。
         0 = 密钥永不过期
        = 密钥在 n 天后过期
      w = 密钥在 n 周后过期
      m = 密钥在 n 月后过期
      y = 密钥在 n 年后过期
密钥的有效期限是?(0)
密钥永远不会过期
以上正确吗?(y/n)y
 //以上就用默认信息好了

您需要一个用户标识来辨识您的密钥;本软件会用真实姓名、注释和电子邮件地址组合
成用户标识,如下所示:
    “Heinrich Heine (Der Dichter) <
heinrichh@duesseldorf.de>”

真实姓名:Long Fei
电子邮件地址:
fleet.long@gmail.com
注释:win2k3
您选定了这个用户标识:
    “Long Fei (win2k3) <
fleet.long@gmail.com>”   //这就是UID,为了准确,建议使用完整邮箱名

更改姓名(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: 密钥 63E5D69B 被标记为绝对信任
公钥和私钥已经生成并经签名。

gpg: 正在检查信任度数据库
gpg: 需要 3 份勉强信任和 1 份完全信任,PGP 信任模型
gpg: 深度:0 有效性:  2 已签名:  0 信任度:0-,0q,0n,0m,0f,2u
pub   1024D/63E5D69B 2008-05-25
密钥指纹 = 409D 9321 9A1A 7007 B5B7  FA6C 6F0A 7524 63E5 D69B
uid                  Long Fei (win2k3) <
fleet.long@gmail.com>
sub   2048g/B6A44269 2008-05-25

 

现在,我们用gpg --list-keys,就可以看到刚才产生的公钥了;

查看私钥用gpg -K
pub   1024D/63E5D69B 2008-05-25
uid                  Long Fei (win2k3) <
fleet.long@gmail.com>
sub   2048g/B6A44269 2008-05-25

 

现在,我们就可以导出公钥,发布给需要把信息加密给我们的人。

gpg -a --export -o mykey fleet.long@gmail.com

-a: 以ASCII发布,这样比二进制文件看起来整洁一些;

--export: 导出公钥;

-o mykey: 导出的信息写入文件mykey;

fleet.long@gmail.com: 作为UID标识,即我们刚才建立的密钥。

这样,我们就得到了文件mykey,我们可以把这个文件传给别人,也可以直接把文件的内容贴出来,别人把这些信息写入一个文本文件,也可以作为key来导入。假如另外一台电脑上的人要导入这个密钥,只需要简单的使用命令:

gpg --import mykey

 

假设我们得到了另外一把公钥mykey2,我们先将其导入公钥环:

gpg --import mykey2

现在我们用gpg --list-keys,就会发现多了把钥匙:

C:/Documents and Settings/Administrator/Application Data/gnupg\pubring.gpg
--------------------------------------------------------------------------
pub   1024D/A223BCBA 2008-05-25
uid                  lf_win32 (at win2k3) <
lf426@sina.com>
sub   2048g/EFF53ACF 2008-05-25

pub   1024D/63E5D69B 2008-05-25
uid                  Long Fei (win2k3) <
fleet.long@gmail.com>
sub   2048g/B6A44269 2008-05-25

 

这样,如果我们要为lf426@sina.com这个UID加密的话,用这样的命令:(假设需要加密的文件是tp.txt)

gpg -seav -u fleet.long@gmail.com -r lf426@sina.com tp.txt

然后gpg会提示你输入用于对fleet.long@gmail.com进行数字签名所需要的密码,正确输入后就产生一个tp.txt.asc文件。当然,我们也可以用参数-o指定加密产生的文件名。

-s: 数字签名;

-e: 加密;

-a: 以ASCII形式;

-v: 显示gpg工作的详细信息;

-u: 用于签名的UID(fleet.long@gmail.com);

-r:使用这个UID的公钥进行加密(lf426@sina.com);

最后产生的tp.txt.asc文件,只有lf426@sina.com才能解密。

 

如果我们得到了一个用自己公钥加密后的文件,例如fleet.long@gmail.com得到了一个用其公钥加密的文件tp2.txt.asc,简单的使用gpg不带参数的进行解密就可以了:

gpg tp2.txt.asc

您需要输入密码,才能解开这个用户的私钥:“Long Fei (win2k3) <fleet.long@gmail.co
m>”
2048 位的 ELG-E 密钥,钥匙号 B6A44269,建立于 2008-05-25 (主钥匙号 63E5D69B)

gpg: 由 2048 位的 ELG-E 密钥加密,钥匙号为 B6A44269、生成于 2008-05-25
      “Long Fei (win2k3) <
fleet.long@gmail.com>”
gpg: 于 05/26/08 03:22:48 创建的签名,使用 DSA,钥匙号 A223BCBA
gpg: 完好的签名,来自于“lf_win32 (at win2k3) <
lf426@sina.com>”

从这些信息,我们可以看到这个文件的数字签名是lf426@sina.com的,并且得到了解密后的文件tp2.txt。

到这里,我们就把gpg最简单的使用介绍完毕了。希望大家能觉得有帮助。

 

官方有篇中文教程大家可以在这里看:

http://www.gnupg.org/howtos/ch/index.html


来自 http://blog.sina.com.cn/s/blog_53d71bf00100a36f.html

普通分类: