GPG签名使用与验证

为自己的程序/文件签名

当我们制作了一些“作品”,想要拿到互联网与其他人一起分享时,给我们的“作品”添加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表示指定解密后生成的文件。

发表评论

error: Content is protected !!