Linux gpg命令超全详解|文件加密解密、密钥管理、签名验证实战教程

Linux gpg命令超全详解|文件加密解密、密钥管理、签名验证实战教程
1. 命令简介gpg (GNU Privacy Guard) 是一个功能强大的开源加密软件套件完整实现了 OpenPGP 标准RFC 4880。它用于保护数据的隐私性、真实性和完整性核心功能包括数字签名、数据加密与解密、密钥管理以及构建信任网络Web of Trust。gpg 是经典的 PGPPretty Good Privacy加密工具的免费替代品广泛应用于软件包签名验证、安全电子邮件通信、文件加密备份及代码提交签名等场景。2. 语法格式gpg [选项] [命令] [文件...]格式说明[选项] 用于修改命令默认行为的标志例如控制输出格式、启用详细模式等。[命令] 指定 gpg 要执行的核心操作例如 --sign, --encrypt。大多数操作都需要明确指定命令。[文件...] 一个或多个输入文件。若未指定文件或使用 -则从标准输入(stdin)读取数据。3. 常用命令及说明下表列出了执行核心操作的主要命令命令缩写说明--sign-s创建包含原始数据和签名的二进制文件.gpg。--clear-sign-创建 ASCII armored 明文签名文件.asc内容可读。--detach-sign-b创建一个独立的二进制签名文件.sig与原始文件分离。--encrypt-e使用接收者的公钥加密数据。--symmetric-c仅使用对称加密算法如AES和密码短语加密数据。--decrypt-d解密数据或验证并提取已签名的文件内容。当输入是加密或签名文件时此为默认操作。--verify-验证分离签名或明文签名文件的完整性。--list-keys-k列出公钥环中的所有公钥。--list-secret-keys-K列出私钥环中的所有私钥。--import-从文件导入密钥到本地密钥环。--export-将本地密钥导出到文件。--generate-key-交互式生成一个新的密钥对。--quick-generate-key-非交互式快速生成密钥对。4. 常用选项及说明下表列出了用于调整命令行为的常用选项选项缩写说明--armor-a生成 ASCII 文本格式Armored的输出而非二进制格式便于邮件发送或网页粘贴。--recipient-r指定加密数据的接收者用户ID、邮箱或密钥ID。可多次使用以加密给多人。--local-user-u指定用于签名或解密的私钥用户ID或密钥ID。--output-o将输出写入指定的文件而不是标准输出(stdout)。--verbose-v启用详细输出模式。可多次使用如 -vv以增加信息详细程度。--quiet-q安静模式减少警告和信息输出。--batch-启用批处理模式禁止所有交互式查询适用于脚本。--yes-默认对所有交互询问回答“是”。--pinentry-mode-控制密码短语输入方式。例如loopback用于脚本从管道输入密码。5. 示例用法5.1 密钥管理生成密钥对# 交互式生成密钥对推荐新手 gpg --full-generate-key # 快速非交互式生成一个2048位RSA密钥对有效期为365天 gpg --batch --passphrase --quick-generate-key Alice Dev rsa2048 default 365列出与导出密钥# 列出所有公钥 gpg --list-keys # 列出所有私钥 gpg --list-secret-keys # 将 Alice 的公钥以 ASCII 格式导出到文件 gpg --armor --export aliceexample.com alice_public.asc # 导入 Bob 的公钥文件 gpg --import bob_public.asc5.2 签名与验证# 为 package.tar.gz 创建二进制签名文件 package.tar.gz.gpg gpg --sign package.tar.gz # 为 release_notes.txt 创建 ASCII 明文签名文件 release_notes.txt.asc gpg --clear-sign release_notes.txt # 为重要文件 document.pdf 创建独立的分离签名 document.pdf.sig gpg --detach-sign document.pdf # 验证上述分离签名 gpg --verify document.pdf.sig document.pdf # 验证一个明文签名文件并提取原始内容到 verified.txt gpg --verify document.txt.asc gpg --decrypt document.txt.asc verified.txt5.3 加密与解密# 使用 Bob 的公钥已导入加密 secret_message.txt 给 Bob gpg --encrypt --recipient bobexample.com secret_message.txt # 输出默认二进制文件 secret_message.txt.gpg # 使用 ASCII 格式加密给多人Alice和Bob gpg --armor --encrypt -r aliceexample.com -r bobexample.com secret.txt # 输出 secret.txt.asc # 仅使用密码进行对称加密不涉及密钥对 gpg --symmetric confidential.txt # 命令会提示输入并确认密码 # 解密收到的加密文件gpg会自动寻找对应的私钥 gpg --decrypt secret_message.txt.gpg # 或将解密内容输出到文件 gpg --decrypt -o decrypted_message.txt secret_message.txt.gpg6. 注意事项私钥安全 私钥是您数字身份的核心必须妥善保管例如使用强密码短语保护。丢失私钥意味着无法解密以其公钥加密的文件私钥泄露则意味着身份可能被冒用。信任链 加密的安全性依赖于对公钥真实性的信任。请通过安全渠道验证从网上下载或收到的公钥指纹Fingerprint不要盲目信任未知来源的密钥。算法选择 较旧版本的 GPG 可能默认使用不够安全的算法如 RSA-1024, SHA1。建议在生成密钥时明确指定更安全的算法如 rsa4096 或 ed25519。批处理脚本 在脚本中使用 gpg 时务必结合 --batch、--pinentry-mode loopback 以及通过文件或环境变量安全地传递密码短语以避免脚本挂起等待输入。输出目标 使用 --encrypt 或 --sign 等命令时默认会生成新文件原文件名加 .gpg 等后缀。使用 -o 选项可以明确指定输出文件名和位置。获取更多Linux学习资料请关注“阿成学长工具包”对话框中输入2647获取