接下来是使用GnuPG生成属于自己的密钥对、对文件加解密和数字签名。
PS:回想起来,其实当初大学的上机课时,老师是教过怎么使用PGP(商业软件)对E-Mail进行加密和数字签名的,不过那时候似懂非懂。
一、生成密钥对
用GnuPG Shell可以方便生成密钥对。打开GnuPG Shell →「Keys」→「Generate New…」
(高级设置)可以设置加密方式、密钥长度、密钥有效期。通常不用修改。
(下一步)设置私钥密码(passphrase)
- 每次使用私钥进行加密、解密、签名操作都要输入此密码
- 一旦私钥丢失,私钥密码就成了最后一道防线,因此密码要有一定的长度和复杂度
填好以上信息后,GnuPG Shell将生成密钥对,生成时间大约几十秒到几分钟不等,与密钥长度和电脑配置有关。
生成密钥对后,会在GnuPG Shell中看到新密钥的公钥Key ID,这个Key ID就是唯一标识这个公钥的字符。
二、导入/导出密钥
- 公钥导入/导出、私钥导入都可以在GnuPG Shell中操作,很简单。
- 由于GnuPG Shell不支持对私钥导出,所以需要在命令行中操作。
命令为:「gpg.exe -o keyfilename –export-secret-keys mykeyID -a」
-o表示导出私钥到名为“keyfilename”的文件中,没有mykeyID则导出所有私钥,-a表示以文本格式(ASCII)输出。
三、加密/解密和数字签名
注意:
- 对文件进行签名是使用自己的私钥。
- 对文件进行加密有2种情况:如果加密文件只是给自己查看那么使用自己的公钥加密。如果用户A想给用户B发送一个加密文件“test.txt”,那么用户A要使用用户B的公钥对”test.txt”进行加密,这个加密后的“test.txt”只能用用户B自己的私钥才能解密查看。
- 对文件加密/签名
右击需要加密/签名的文件(例:test.txt)→「GPGee」→「Sign & Encrypt」
如果只签名(Sign)则把加密(Encrypt)取消(none),反之同理。
签名选项:(Detached)表示生成单独一个签名文件“test.txt.asc”,(Attached)表示生成一个文件里面包含签名和原始文件。
加密选项:(Public-key)表示用公钥加密文件,(Symmetric)对称加密,用密码就能解密,类似于WinRAR、WinZIP的加密压缩。
(Text output)文本输出通常选上。
- 对文件解密、验证签名
解密文件:只需一步,右击已加密的文件 →「GPGee」→「Verify/Decrypt」。
验证签名:详细见《GnuPG使用笔记(一)》。
最后附上我的公钥
Key ID:0x6BD8D10A
指纹采样(fingerprint):E5934CC81170F34BE969BACF67E552116BD8D10A