写在前面
由于此前某项目需要通过GPG密钥在线传递加密信息,现将以默认的方式生成一个GPG密钥并导出公钥的过程记录如下,仅可实现与他人传递加密信息并将其解密的最基本功能。如有更多对GPG密钥的需求,请移步文末参考链接补充学习。
另外,传递中遇到过一个很奇怪的问题,我的Windows电脑在安装了Kleopatra的基础上生成的GPG密钥,无法在对方的Linux机上导入,最后还是我用了另一台Linux机重新生成了一个GPG密钥才成功的。但是我自己的Linux机和Windows机就可以相互导入成功,我没想明白这是为啥。
本文主要包含以下几个要点:
- 安装
- GPG密钥生成
- 查看已有密钥
- 导出公钥
- 解密文件
- 加密文件
安装
Ubuntu安装gnupg:
sudo apt install gnupg
GPG密钥生成
gpg --gen-key
因为是默认的生成方式,所以仅需要输入名字和电子邮箱即可,注释可以空着。
查看已有密钥
gpg --list-keys
或者简写: gpg -k
导出公钥
gpg --armor --out public-key.pub --export <key-name>
public-key.pub 即为导出的公钥文件,也可取其他名字,后缀也无所谓。在当前目录下找到该文件,就可以通过网络或其他途径发给别人,然后他们就可以用这个公钥文件给需要传递的文件加密了。
<key-name> 是生成密钥时设置的用户名。
解密文件
gpg --output <FileDecrypted> --decrypt <FileToDecrypt>
<FileDecrypted> 为解密后得到的文件全称, <FileToDecrypt> 是待解密的文件,即别人发给你的加密后的文件全称。解密后得到的文件就在当前目录下。至此,作为一个加密文件接收方即可完成GPG的基础使用。
加密文件
%%%说明:如果是对方需要你的公钥来为文件加密,那么你不需要进行这一步骤,这一步骤是由对方完成的。
先查看当前已有的所有密钥,以便和导入后结果对比:
gpg -k
使用对方密钥加密前,需要先导入加密文件接收方的GPG公钥,其中 <pubkey-name> 为对方的公钥文件全称:
gpg --import <pubkey-name>
然后查看当前已有密钥,和前面的状态比对,确认对方密钥已导入:
gpg -k
再对文件进行加密,其中 <recipient-name> 是加密后文件的接收方公钥的用户名:
gpg --recipient <recipient-name> --output xx.en.xxx --encrypt origin.xxx
本文详细记录了在Ubuntu上生成GPG密钥并进行基本操作的过程,包括安装gnupg、生成密钥、查看密钥、导出公钥、解密和加密文件。在实际使用中遇到Windows与Linux之间导入密钥的不兼容问题,但通过Linux重新生成密钥解决了问题。



986

被折叠的 条评论
为什么被折叠?



