使用GPG进行数据加密
这篇博客因为涉及的信息量太大、知识面太广,于是准备了许久时间。
概念
首先,提出几个概念:
什么是密钥?什么是公钥?
什么是私钥?什么是数字签名和密钥指纹?
密钥,顾名思义,解密的钥匙。
使用GPG加密的文件(如果你是使用密钥加密的话)必须用密钥才能解密出来,以区别于常规的密码。
既然有了密钥的概念,那么就来讲一下私钥和公钥。
公钥(Public Key)与私钥(Private Key)是通过一种算法得到的一个密钥对(即一个公钥和一个私钥),公钥是密钥对中公开的部分,私钥则是非公开的部分。公钥通常用于加密会话密钥、验证数字签名,或加密可以用相应的私钥解密的数据。通过这种算法得到的密钥对能保证在世界范围内是唯一的。使用这个密钥对的时候,如果用其中一个密钥加密一段数据,必须用另一个密钥解密。比如用公钥加密数据就必须用私钥解密,如果用私钥加密也必须用公钥解密,否则解密将不会成功。
上文引自百度百科
简单来说,公钥是用来加密数据的,被此公钥加密的数据只能用相对应的私钥才能解密。
再来解释一下数字签名。数字签名,就是只有信息的发送者才能产生的别人无法伪造的一段数字串(SHA1是可以被伪造的,详见上一篇文章),这段数字串同时也是对信息的发送者发送信息真实性的一个有效证明(因为数字签名是使用数据的发送方的私钥对数据进行校验和其他与数据内容有关的变量进行加密处理)。
而密钥指纹则是用于标识较长公共密钥字节的短序列,旨在标识此密钥,可以方便密钥的管理。但是密钥指纹并不是安全的,详见以下:
上文引自维基百科
所以将密钥指纹与哈希校验进行联合使用可以检验文件的唯一性。
接下来讲一讲,如何使用GPG进行加密。
使用GPG进行加密
创建密钥对
首先,进入GPG网站(https://www.gpg4win.org/)下载其加密软件。下载完别忘了校验其完整性。
下载与安装这里就不演示了。
下载完毕后打开软件,由于之前没有过密钥,所以这里要新建密钥对。
![]() |
新建密钥对 |
第二步输入细节。
![]() |
输入细节 |
打开高级设置里,可以设置密钥对的加密强度,我这里选择了第二个。密钥长度越长越安全,如果是使用RSA进行加密的话,请勿使用长度低于1024位的密钥,因为曾有过被破解的记录。
![]() |
高级设置 |
一切就绪之后在创建之前可以再详细检查一遍。
![]() |
详细参数 |
在进行下一步后,将会提示你设置一个密码来保护你的私钥(可选),即使私钥不小心泄露了,别人拿到也是用不了的。
![]() |
添加密码 |
等待几分钟即可完成创建,创建完后点完成。
![]() |
创建完成 |
![]() |
总览 |
至此,密钥对创建完毕。
加密与解密
加密和解密很简单,对着需要加密(解密)的文件点击鼠标右键。
这里的为他人加密是指使用他人的公钥来加密。如果你想把此文件传达给他人,就需要在此使用他人的公钥加密。
这里输入创建密钥对时输入的私钥密码。
加密完成。
解密的话只需双击即可,前提是你有此加密文件的私钥。
至此,加密解密完毕。
可能有人会说,我怎么把私钥给别人来解密我给他加密的文件呢?其实不用将你的私钥给别人,只需让需要跟你加密通讯的人再创建一个他的密钥对,然后他将他的公钥给你,每次你需要发送数据给他时,使用他的公钥进行加密,然后他回数据时,再使用你的公钥进行加密,这样就达到了加密解密的唯一性。
如果有人想跟我讨论一些不可告人或者逃避信息审查的东西,可以使用我的公钥加密信息来发给我。我把公钥放在下边了。
公钥地址:
MIT PGP Key Server:https://pgp.mit.edu/pks/lookup?op=get&search=0x5842A0736C051F4B
或
访问 https://pgp.mit.edu/ 搜索关键字 0x5842a0736c051f4b
surf.nl:https://pgp.surfnet.nl/pks/lookup?op=get&search=0x5842A0736C051F4B
或
访问 https://pgp.surfnet.nl/ 搜索关键字 0x5842a0736c051f4b
百度网盘:https://pan.baidu.com/s/1NKSBkIid-0_IHnBjhsRsMA 提取码: 8s8r
蓝奏云:https://www.lanzous.com/i358yqb
File Dropper:http://www.filedropper.com/publickey-milkbrother666gmailcom-0x051f4b
MD5: 5830bafdf69477eb18f8ee775027cc95
SHA1: 4e4de49cf8de66ba8feec77df4933b965891c36c
SHA256: ba5e30acd50858e40dffe11016c0d4811a9017cf88a46de0a30de91e913129e4
指纹:C265 335F C336 FBA3 DF8B 58ED 5842 A073 6C05 1F4B
因未知原因导致链接或者公钥莫名其妙失效,所以多放了几个。
![]() |
加密文件 |
![]() |
加密选项 |
![]() |
输入密码 |
![]() |
加密完成 |
![]() |
输出 |
至此,加密解密完毕。
后话
这种方法的优点就是安全性可以做到非常好,无私钥的人无法知道这个加密文件里面到底是什么东西;然而缺点就是太麻烦了。可能有人会说,我怎么把私钥给别人来解密我给他加密的文件呢?其实不用将你的私钥给别人,只需让需要跟你加密通讯的人再创建一个他的密钥对,然后他将他的公钥给你,每次你需要发送数据给他时,使用他的公钥进行加密,然后他回数据时,再使用你的公钥进行加密,这样就达到了加密解密的唯一性。
如果有人想跟我讨论一些不可告人或者逃避信息审查的东西,可以使用我的公钥加密信息来发给我。我把公钥放在下边了。
公钥地址:
MIT PGP Key Server:
访问 https://pgp.mit.edu/ 搜索关键字 0x5842a0736c051f4b
surf.nl:https://pgp.surfnet.nl/pks/lookup?op=get&search=0x5842A0736C051F4B
或
访问 https://pgp.surfnet.nl/ 搜索关键字 0x5842a0736c051f4b
百度网盘:https://pan.baidu.com/s/1NKSBkIid-0_IHnBjhsRsMA 提取码: 8s8r
蓝奏云:https://www.lanzous.com/i358yqb
File Dropper:http://www.filedropper.com/publickey-milkbrother666gmailcom-0x051f4b
Google Driver:https://drive.google.com/file/d/1Ng-4wsDSpfGvhivQPH0D9OWaq6iwRFTe/view?usp=sharing
OneDrive:https://1drv.ms/u/s!Ap3jo-9dxO6HhR76H9Tft-oF8rWW
Drop.me:https://drop.me/ojKJmE
TinyUpload.com:http://s000.tinyupload.com/index.php?file_id=25576596905046235059
OneDrive:https://1drv.ms/u/s!Ap3jo-9dxO6HhR76H9Tft-oF8rWW
TinyUpload.com:http://s000.tinyupload.com/index.php?file_id=25576596905046235059
MD5: 5830bafdf69477eb18f8ee775027cc95
SHA1: 4e4de49cf8de66ba8feec77df4933b965891c36c
SHA256: ba5e30acd50858e40dffe11016c0d4811a9017cf88a46de0a30de91e913129e4
指纹:C265 335F C336 FBA3 DF8B 58ED 5842 A073 6C05 1F4B
因未知原因导致链接或者公钥莫名其妙失效,所以多放了几个。
使用此公钥加密前,请务必校验公钥指纹和Hash值以保证公钥的完整性。
加油
回复删除