关于gpg加密

Table of Contents

问题 :有一个文件 .authinfo ,如何加密成 .authinfo.gpg ?

以下是将 .authinfo 文件加密成 .authinfo.gpg 的步骤:

准备 .authinfo 文件:

  • 首先,确保你有一个 .authinfo 文件,它包含了需要加密的认证信息。例如:
machine smtp.example.com login your-username password yourpassword

安装 GnuPG:

  • 如果你的系统中尚未安装 GnuPG,请先进行安装。在大多数 Linux 发行版和 macOS (通过 Homebrew) 中,可以使用以下命令安装:
sudo apt-get install gnupg # Ubuntu/Debian
brew install gnupg # macOS

生成 GnuPG 密钥对

  • 如果还没有的话,使用 GnuPG 生成密钥对。
gpg --full-generate-key

注⚠️:

  • 期间会提示输入密码;解密时,会用到改密码

列出公钥:

gpg --list-keys

加密 .authinfo 文件:

gpg -e -r your@email.com -o ~/.authinfo.gpg ~/.authinfo

注⚠️:

  • 这里 your@email.com 是你的 GnuPG 密钥绑定的邮箱;
  • ~/.authinfo.gpg 是加密文件的输出路径。

解密测试

gpg -d ~/.authinfo.gpg

注⚠️:

  • 会提示输入密码,该密码就是生成密钥时输入的密码;
  • 如果一切正常,这将输出原始的 .authinfo 文件内容。

使用加密文件:

  • 在需要使用 .authinfo 中的凭据时,通过脚本或命令行使用 GnuPG 解密 .authinfo.gpg 文件。
  • 例子:使用 offlinemap 同步邮件时,使用一个文件 pass.py 需要读取该文件。
import re
import os

def get_password_emacs(machine, login, port):
    s = "machine %s login %s password ([^ ]*) port %s\n" % (
	machine, login, port)
    p = re.compile(s)
    authinfo = os.popen("gpg -q --no-tty -d ~/.authinfo.gpg").read()
    return p.search(authinfo).group(1)

Date: 2024-08-08 Thu 13:50