GnuPG是opengpg的开源实现,用来加密数据和验证签名。 集成很多密码协议,使用也比较简单。
首先来个开胃小菜:这是使用手动输入密码的AES对称加密协议来加密test.txt文件,默认输出为test.txt.gpg, 使用 -armor后可以让加密数据转化为ascii文本,便于传输。
1 2 | gpg -c --cipher-algo AES -armor test.txt //加密 gpg --decrypt AES -armor test.txt.asc //解密 |
接下去是正式gpg用法。具体可以 man gpg。
生成密钥:
1 | gpg --gen-key |
会询问key的类型,长度等等,还有id和email一 一写上去。这里会要求输入passphrase,一定要注意安全。这个passphrase是整个系统中最薄弱的部分,man里也这样提到了,因为这个可以被brute crack。最后会提示多动动键盘什么的,估计要3分钟左右,这不是死机,实在产生足够随机的伪随机数。所以要多动键盘,运行一下其他任务什么的,如果不这样做,等待的时间更长。
1 2 3 4 5 6 7 8 | 查看已有的密钥 gpg --list-key gpg --list-secret-keys 不出意外会出现: pub 2048R/keyid date uid id (comment) <email> sub 2048R/keyid date |
使用下面的命令,就可以把key转换成ascii,可以email给好友,让他发加密的文件给你,增加安全性。或者直接把key上传到服务器,让其他人都能找到你的key。不要怀疑安全性。
1 2 | gpg --export --armor key_id gpg --send-keys --keyserver pgp.mit.edu key_id |
有了key就可以加密解密了。有很多地方需要使用密码,密码不能太简单,也不能重复,忘记了就麻烦了,所以最好是记下来,记到哪呢? 我的做法是这样的。记到文件里,然后使用pgp加密,然后传到网盘啊什么地方的备份一下,要更新密码时再解密再加密。虽然效率低,但安全。如果你觉得密码单一不是问题的话,我可以给你看几个被拖库的数据库,看看你在不在里面。
1 2 3 4 5 6 7 8 9 10 | gpg -r sword.york --encrypt test.txt 或者: gpg -se -r sword.york test.txt gpg --decrypt test.gpg --output t 还有-u --passphrase用不来 然后还可以导出key gpg --export > pubkey gpg --export-secret-keys > seckey |
key管理,可以直接使用gpg –edit-key user_id. 进入控制台后,有addkey delkey等命令,不详细说了,直接help就好了,别忘了save,否则什么有不会改变。下面是各个key后面字母的含义。
1 2 3 4 | PUBKEY_USAGE_SIG S PUBKEY_USAGE_CERT C PUBKEY_USAGE_ENC E PUBKEY_USAGE_AUTH A |
参考: