Linux命令学习手册(4)

这里,如果导入公钥命令是一样的,不过指定的文件应该是"mypubkey"了。这个命令是另外一台机器上运行的,导入私钥之后那个机器就可以使用这个私钥解密数据了。一般来说我们都是发布公钥让人导入,而不是导入私钥匙。

实践发现,

*导入私钥之后,另外一台机器直接可以用对应的公钥加密,而不用导入公钥;这时候另外的那个机器也可以导出公钥,不过有一行内容和原始机器公共钥匙内容不一样,但是用这个公钥加密的数据也可以用原始的机器解密出来的。

*导入公钥之后,另外一台主机无法导出私钥,可以导出公钥,导出内容和原来一样。使用公钥加密之后,无法解密(因为没有私钥)。

无论导入的是公钥还是私钥,导入之后可以通过gpg --list-keys来查看导入的结果,而且从结果可以看到没有导入的那个配对(或者私钥或者公钥)的KeyID。

**


**签名与验证

签名作用是验证明文、加密文件、密钥是来自正确的发送者的,没经过其它人的修改。签名使用的也是密钥对,与加密操作相同。只是在结果上,点不同。它只是在文件最后添上加密的验证信息(签名)。一旦文件有所改变,签名验证就会出错。比如我们Ubuntu安装软件时,首先要用事先保存的密钥(大多从hkp://keyserver.ubuntu.com获得)验证软件源的签名,以保证我们连的是正确的安全的下载服务器。

*查看之前的目录和文件如下:

[root@lv-k gpgtest]# pwd

/root/tmpTrans/gpgtest

[root@lv-k gpgtest]# ls

mydecrypt

[root@lv-k gpgtest]# cat mydecrypt

hello!

welcome come to here

today is 2011-06-14


*生成签名,过程如下:

[root@lv-k gpgtest]# gpg -o mydecrypt.sig -s mydecrypt

#####################以下为输出##############################

您需要输入密码,才能解开这个用户的私钥:“linuxidc (test) <quiet_heart000@linuxidc.com>”

1024 位的 DSA 密钥,钥匙号 DDBA2DEA,建立于 2011-06-14


请输入密码: <====这里输入你的密码

#####################以上为输出##############################

[root@lv-k gpgtest]# ls

mydecrypt  mydecrypt.sig

这里可以看到生成了mydecrypt.sig文件(其内容是乱码),其中,mydecrypt是原文件,mydecrypt.sig包含了原文件和签名,是二进制的,这个命令会要求你输入私钥密码。


*产生文本格式的签名

[root@lv-k gpgtest]# gpg -o mydecrypt.sig --clearsign mydecrypt

#####################以下为输出##############################


您需要输入密码,才能解开这个用户的私钥:“linuxidc (test) <quiet_heart000@linuxidc.com>”

1024 位的 DSA 密钥,钥匙号 DDBA2DEA,建立于 2011-06-14


请输入密码: <====这里输入你的密码

#####################以上为输出##############################

[root@lv-k gpgtest]# cat mydecrypt.sig

-----BEGIN PGP SIGNED MESSAGE-----

Hash: SHA1


hello!

welcome come to here

today is 2011-06-14

-----BEGIN PGP SIGNATURE-----

Version: GnuPG v1.4.5 (GNU/Linux)


iD8DBQFOCFkQ27LApd26LeoRAvC+AJ9xp1HLT6zup7AZtan5qpQrpQyn1QCfV0Zy

HG+z+/hxfrbs9pzo6ODYDG4=

=o1+k

-----END PGP SIGNATURE-----

这里,通过以上可知产生的mydecrypt.sig同样包含原文件和签名,文件是文本格式的,原文件不变。解开和验证签名的方法


*验证签名:

[root@lv-k tmp]# gpg --verify mydecrypt.sig

gpg: 于 2011年06月27日 星期一 17时58分39秒 CST 创建的签名,使用 DSA,钥匙号 DDBA2DEA

gpg: 完好的签名,来自于“linuxidc (test) <quiet_heart000@linuxidc.com>”

这里,在验证之前,必须导入文件作者的公钥,对于分离式签名最后还要加上原文件参数(后面会讲到)。


*将签名文件恢复

[root@lv-k tmp]# gpg -o my --decrypt mydecrypt.sig

gpg: 于 2011年06月27日 星期一 17时58分39秒 CST 创建的签名,使用 DSA,钥匙号 DDBA2DEA

gpg: 完好的签名,来自于“linuxidc (test) <quiet_heart000@linuxidc.com>”

[root@lv-k tmp]# cat my

hello!

welcome come to here

today is 2011-06-14

这里,不需要输入密码,生成的文件my和原来的文件名称一样。


*签名并加密:

[root@lv-k gpgtest]# gpg -o mydecrypt.sig -ser linuxidc mydecrypt

#####################以下为输出##############################


您需要输入密码,才能解开这个用户的私钥:“linuxidc (test) <quiet_heart000@linuxidc.com>”

1024 位的 DSA 密钥,钥匙号 DDBA2DEA,建立于 2011-06-14


请输入密码: <====这里输入你的密码

#####################以上为输出##############################

这里,无法直接通过"gpg --verify mydecrypt.sig"对文件mydecrypt.sig进行验证。而是在解密恢复文件的时候直接验证了,后面会说到。


*恢复加密的签名文件:

[root@lv-k gpgtest]# gpg -o my --decrypt mydecrypt.sig

#####################以下为输出##############################

您需要输入密码,才能解开这个用户的私钥:“linuxidc (test) <quiet_heart000@linuxidc.com>”

2048 位的 ELG-E 密钥,钥匙号 2BBE2C91,建立于 2011-06-14 (主钥匙号 DDBA2DEA)


请输入密码: <====这里输入你的密码,输入之后提示自动消失

gpg: 由 2048 位的 ELG-E 密钥加密,钥匙号为 2BBE2C91、生成于 2011-06-14

“linuxidc (test) <quiet_heart000@linuxidc.com>”

gpg: 于 2011年06月27日 星期一 18时11分27秒 CST 创建的签名,使用 DSA,钥匙号 DDBA2DEA

gpg: 完好的签名,来自于“linuxidc (test) <quiet_heart000@linuxidc.com>”

#####################以上为输出##############################

[root@lv-k gpgtest]# cat my

hello!

welcome come to here

today is 2011-06-14

这里,解密之后进行验证,而不是直接验证,因为不能通过"gpg --verify mydecrypt.sig"直接验证加密的签名文件。

*分离式签名:

[root@lv-k gpgtest]# gpg -o mydecrypt.sig -ab mydecrypt

#####################以下为输出##############################


您需要输入密码,才能解开这个用户的私钥:“linuxidc (test) <quiet_heart000@linuxidc.com>”

1024 位的 DSA 密钥,钥匙号 DDBA2DEA,建立于 2011-06-14


请输入密码: <====这里输入你的密码,输入之后提示自动消失

#####################以上为输出##############################

[root@lv-k gpgtest]# cat mydecrypt.sig

-----BEGIN PGP SIGNATURE-----

Version: GnuPG v1.4.5 (GNU/Linux)


iD8DBQBOCZDP27LApd26LeoRArTQAJ9q13/4jVvJbg5f83lNnoC1Gq111wCfWRm8

1awHtUl2sN9SWNt0qNoFQHw=

=ySnh

-----END PGP SIGNATURE-----

这里,mydecrypt.sig仅包含签名,分离式签名的意思是原文件和签名是分开的。b选项表示分离式签名detach-sign.


*对分离的签名进行验证:

[root@lv-k gpgtest]# gpg --verify mydecrypt.sig mydecrypt

gpg: 于 2011年06月28日 星期二 16时29分03秒 CST 创建的签名,使用 DSA,钥匙号 DDBA2DEA

gpg: 完好的签名,来自于“linuxidc (test) <quiet_heart000@linuxidc.com>”

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/16825.html