为自己的程序/文件签名
当我们制作了一些“作品”,想要拿到互联网与其他人一起分享时,给我们的“作品”添加GPG签名,就可以让他人验证所收的“作品”是未经其他人篡改的。
做到这一点,首先要生成一个属于自己的GPG密钥对:
gpg --gen-key
生成过程是交互式的,期间会问你要些生成key的基础信息
以及用密码为你的密钥进行加密:
输入完成后,会自动开始生成密钥,这将需要一些时间:
当生成完之后,可以看到其生成了一对密钥文件:一个是私钥,用于给自己发布的文件进行签名;另一个是公钥,用于放出去给其他用户来验证我们签名的文件,就和上面验证Python程序的公钥用途一样,并给出其指纹。
使用以下命令可以导出创建密钥对的公钥和私钥:
gpg --armor --output public-key.txt --export 66F22F64 gpg --armor --output private-key.txt --export-secret-keys 66F22F64
公钥发布出去,用于其他用户验证;私钥自己保留。
为文件签名
使用以下命令可以对某个文件进行签名:
echo 123 > demo.txt gpg --armor --detach-sign demo.txt
选项–detach-sign表示生成一个单独的签名文件,与内容分开,该文件默认是二进制方式保存,加上–armor表示生成ASCII码的签名文件。生成时会提示输入创建密钥时的密码:
在另一台机导入公钥,进行签名验证:
gpg --import public-key.txt gpg --verify demo.txt.asc demo.txt
加密文件
正如上面gpg可以用私钥给文件签名,也同样可以用公钥为文件加密。
在刚导入了公钥的主机上创建一个文件,并用公钥为其加密:
echo 'Hello World' > test.txt gpg --recipient 66F22F64 --output test.en.txt --encrypt test.txt
–recipient表示使用指定的公钥进行加密;–output指定生成文件的名字;–encrypt指定要加密的文件。
之后我们将这个加密过的文件拿到具有私钥的主机上进行解密:
gpg -u 66F22F64 --output test.txt --decrypt test.en.txt
-u表示指定本地解密使用的密钥;–decrypt表示指定要解密的文件;–output表示指定解密后生成的文件。
页码: 1 2