准备知识:
对称加密:
发送方: 010111 XOR 101100 = 111011 (101100为加密密钥)
接收方: 111011 XOR 101100 = 010111
公钥加密:
发送方产生两把密钥:公钥(Public Key)&私钥(Private Key),也就是密钥对(Key Pair)
明文->公钥加密->密文->私钥解密->明文
数字签名:
....
-----------------------------发送方的操作-------------------------------------
sh# mkdir ~/.gnupg //默认是把密钥对存在此目录
sh# gpg --gen-key //生成公钥pubring.gpg,私钥secring.gpg,邮箱是很重要的
sh# gpg --list-keys //查看所有密钥,如果生成了多个密钥对的话就有多个了
sh# gpg --list-public-key //查看所有公钥,注意pub后面的*号字符串,pub xxxxx
sh# gedit test.txt //生成一个文本,里面输入点东西,用于以下测试
将演示两种验证方式和一个数字签名
一种是公钥验证,大概是用于验证文件完整性,相当于:sh#md5sum ***;
另一种是私钥验证,控制只让那些知道密码的人能打开看
sh# gpg --clearsign test.txt //使用私匙对数据进行签名,生成test.txt.asc,打开此文件还是可以看到内容的,只是多了一些东西,把这个发给其他人,这个演示公钥验证
sh# gpg --output test.txt.gpg -r [email protected] -as --encrypt test.txt //导入私钥,数据被加密成了test.txt.gpg,打开此文件看不到原信息的,把这个发给对方,这个演示私钥验证
sh# gpg --output test.sig --sign test.txt //这个演示数字签名
---------------------------接收方的操作------------------------------------------
sh# gpg --import test.gpg //导入公钥至本机,test.gpg由发送方邮件传输过来或从公钥服务器下载过来的
1:公钥验证
sh# gpg --verify test.txt.asc //将有信息表明是完整的签字,假如改变了这个文件里面的信息再执行此命令,将出现不同的结果哦!
2:私钥验证
sh# gpg --decrypt test.txt.gpg > zjstandup.txt //执行,要输入正确的密码(在发送端生成密钥对时的那个)才能生成txt
3;数字签名
sh# gpg --output sig.txt --decrypt test.sig //将显示完整的签字并还原内容生成sig.txt
sh# gpg --help >> manule.txt
sh# gedit manule.txt
//将看到以下说明
gpg (GnuPG) 1.4.1
Copyright (C) 2005 Free Software Foundation, Inc.
This program comes with ABSOLUTELY NO WARRANTY.
This is free software, and you are welcome to redistribute it
under certain conditions. See the file COPYING for details.
Home: ~/.gnupg
支持的算法:
公钥:RSA, RSA-E, RSA-S, ELG-E, DSA
对称加密:3DES, CAST5, BLOWFISH, AES, AES192, AES256, TWOFISH
散列:MD5, SHA1, RIPEMD160, SHA256, SHA384, SHA512
压缩:不压缩, ZIP, ZLIB, BZIP2
语法:gpg [选项] [文件名]
签字、检查、加密或解密
默认的操作依输入数据而定
指令:
-s, --sign [文件名] 生成一份签字
--clearsign [文件名] 生成一份明文签字
-b, --detach-sign 生成一份分离的签字
-e, --encrypt 加密数据
-c, --symmetric 仅使用对称加密
-d, --decrypt 解密数据(默认)
--verify 验证签字
--list-keys 列出密钥
--list-sigs 列出密钥和签字
--check-sigs 列出并检查密钥签字
--fingerprint 列出密钥和指纹
-K, --list-secret-keys 列出私钥
--gen-key 生成一副新的密钥对
--delete-keys 从公钥钥匙环里删除密钥
--delete-secret-keys 从私钥钥匙环里删除密钥
--sign-key 为某把密钥添加签字
--lsign-key