r3f.cn
GitHub Repo stars

GnuPG

GnuPG 速查表,一款加密和签名软件。

#入门指南

#软件

Gpg4win 和 GPG Suite 具有特定于操作系统的功能。

有时 GPG 密钥也被称为 PGP 密钥。它们是可互换的,因为它们都遵循 OpenPGP 标准

#创建密钥对

生成您的密钥:

$ gpg --generate-key

... 或完全配置您的密钥。

$ gpg --generate-full-keys

注意: 选择一个强密码短语!加密的强度取决于您的密码短语的强度。

#密钥管理

列出您的密钥:

$ gpg --list-keys

列出您的私钥:

$ gpg --list-secret-keys

导出您的公钥:

$ gpg --export --armor <ID>

导出您的私钥:

$ gpg --export-secret-key --armor <ID>

删除您的公钥:

$ gpg --delete-key <ID>

删除您的私钥:

$ gpg --delete-secret-key <ID>

#加密

#对称加密

使用密码短语加密:

$ gpg -c <FILE>

使用 -a 标志加密为 ASCII 格式:

$ gpg -ac <FILE>

使用 -o 标志设置输出文件路径:

$ gpg -c <FILE> -o <PATH>

使用密码短语解密:

$ gpg <FILE>

注意: 选择一个强密码短语!加密的强度取决于您的密码短语的强度。

#非对称加密

使用公私钥加密:

$ gpg -e -r <RECIPIENT> <FILE>

使用 -a 标志加密为 ASCII 输出:

$ gpg -ea -r <RECIPIENT> <FILE>

使用 -s 标志加密并签名:

$ gpg -se -r <RECIPIENT> <FILE>

添加多个接收者:

$ gpg -e -r <RECIPIENT1> -r <RECIPIENT2> <FILE>

使用 -o 标志设置输出文件路径:

$ gpg -e -o <PATH> -r <RECIPIENT> <FILE>

使用您的私钥解密:

$ gpg <FILE>

<RECIPIENT> 替换为您目标接收者的导入公钥 ID。

#导入公钥

使用文件导入:

$ gpg --import <FILE>

使用链接导入 (macOS/Linux):

$ curl <WEBSITE> | gpg --import

不要忘记签署导入的密钥:

$ gpg --sign-key <ID>

#提交签名

#本地 Git 设置

启用 GPG 签名:

$ git config --global commit.gpgsign true

设置签名密钥:

$ git config --global user.signingkey <ID>

设置 GPG 位置:

$ git config --global gpg.program <PROGRAM>

注意: 您在 Git 和 GnuPG 中的姓名和电子邮件必须匹配。

#GPG 程序列表

<PROGRAM> 替换为以下之一:

平台
Windows C:\Program Files (x86)\GnuPG\bin\gpg.exe
macOS/Linux /usr/local/bin/gpg

#导出您的公钥

导出为 ASCII 格式:

$ gpg --export --armor <ID>

注意: 像 GitHub 这样的平台可能会要求您验证在 Git 和 GnuPG 中设置的电子邮件。

#Windows:添加到启动应用

#PowerShell 命令

当您完全重启时,GPG 代理可能不会自动启动。使用 PowerShell 将 GnuPG 的 IPC 工具添加到启动应用中:

$ $shell = New-Object -ComObject WScript.Shell
$ $shortcut = $shell.CreateShortcut("C:\Users\$($Env:UserName)\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup\gpg-connect-agent.lnk")
$ $shortcut.TargetPath = "C:\Program Files (x86)\GnuPG\bin\gpg-connect-agent.exe"
$ $shortcut.Arguments = "/bye"
$ $shortcut.Save()

或者手动启动:

$ gpgconf --launch gpg-agent

此处检查是否已成功添加。