Big brother is watching you.
所以还是决定弄个GPG key。
先生成钥匙串,也就是一对公钥私钥
gpg --gen-key
都默认选项。要输入密码的,密码需要记好。然后程序要使用随机生成的字符串来创建独一无二的钥匙串,这个过程真的很久,而且要靠敲键盘动鼠标来生成足够随机的随机字符串,看着像是程序死掉了,但其实它还在默默的等你进行足够多的动作,所以就别理了,上上网吧,鼠标一直晃着就是了,等完成了程序会自动退出的。然后就会在~/.gnupg/里看到.gpg文件了。查看钥匙串
gpg -k
gpg -K
这两个分别是查看公钥和私钥的。把公钥导出来,因为这个是要公开到处散发的。
gpg -o ./xjpvictorpubkey.gpg -a --export xjpvictor
这个.gpg是个文本文件,里面的内容可以直接复制粘贴公开发布的。然后当别人拿到我的公钥,同样存成一个文本文件,然后导入
gpg --import ./xjpvictorpubkey.gpg
这样他就能使用我的公钥了。如果他认识我,能够确定一定以及肯定这个公钥是我本人的,那么他就能用
gpg --edit-key xjpvictor
来修改这个公钥的信任度。输入trust,然后根据提示来选择。完了再用quit退出。
当他想给我发加密的文件时,就用我的公钥生成加密文件
gpg -o ./x.gpg -er xjpvictor ./x
然后他把x.gpg传给我,我再用私钥解密
gpg -o ./x -d ./x.gpg
解密时候需要输入密码,就是最先生成钥匙串时候输入的密码。
同样的,我如果要给别人发加密文件,就先导入他的公钥,用这个公钥加密,他收到了加密后的文件就能用他的私钥解密了。
而如果我用自己的公钥加密,那么自然就只有我自己能解密这个文件了。这样可以用于加密一些需要保密或者要上传到云里保存的私人文件,比如说xx照什么的。这可是很重要的,如果陈老师知道这么做,不就没当年那档子事儿了么,唉,没文化真可怕。
但是加密只能保证看到文件的人不是第三方,并不能保证发出文件的人不是第三方。所以需要告诉对方这确实是我发的文件,而且未经他人篡改。这时候就需要对这个文件签名。然后发送签名后的文件。
gpg -o ./x.sig --clearsign ./x
当对方收到我的文件后
gpg --verify ./x.sig
就能验证是否真的是我发送的而且是否被篡改过。
所以,我先用自己的私钥签名,然后用对方的公钥加密,那么当对方拿到文件以后就能确定这个文件是我发送的,而且只有他才能解密。那么文件的传送就是可靠的。
私钥一定要保存好,丢失或者泄漏的话就废了,重新生成一个吧。公钥可以上传到一些公开的服务器上,这样别人就能直接从公钥服务器上根据我的id下载我的公钥,很方便。但是如果公钥设置为永远不过期就最好不要上传了,因为只要没过期,这些服务器就会一直保存着这些公钥,即使私钥丢失导致公钥作废了,所以,不要做这种不负责任的事。
公开我的公钥
PGP key: 0x68b6e3d8 http://pgp.mit.edu:11371/pks/lookup?op=get&search=0x6D30F13E68B6E3D8
Fingerprint: 5556 517C F52F E402 DDF5 5400 6D30 F13E 68B6 E3D8