PGP 加密工具(OpenPGP)
向一个或多个 OpenPGP 公钥加密消息,用私钥解密,或生成 Curve25519/RSA 密钥对。ASCII 封装,在浏览器中运行。
粘贴一个或多个 ASCII 封装的公钥块。列出的每个收件人都能解密该消息。
完全在浏览器中运行,您的数据不会被上传。
什么是 PGP 加密?
向一个或多个收件人的 OpenPGP 公钥加密文本,并返回 ASCII 封装的 BEGIN PGP MESSAGE 块,GnuPG、Kleopatra、Thunderbird 或 ProtonMail 都能解密。本页还会用你的私钥解密消息,并使用 openpgp.js 库生成用于测试的新密钥对。
如何使用 PGP 加密
- 在加密标签页粘贴一个或多个收件人公钥(
BEGIN PGP PUBLIC KEY BLOCK);会显示用户 ID 和指纹,方便你核对。 - 写下消息并点击加密,然后复制或下载封装后的消息。
- 要读取消息,打开解密,粘贴你的私钥、其口令(如果有)以及消息,然后点击解密。
- 还没有密钥?使用生成密钥对,输入姓名或邮箱以及可选的口令,然后点击用此公钥加密。
示例
Message "Hello PGP" encrypted to a Curve25519 public key for "Test Recipient <test@example.com>"
-----BEGIN PGP MESSAGE----- … -----END PGP MESSAGE-----
由于每次都使用新的随机会话密钥,封装后的消息每次运行都不同;解密它会得到 "Hello PGP"。
何时使用 PGP 加密
用于向公开了 PGP 密钥的人发送机密消息、测试 PGP 集成,或无需安装软件就体验 OpenPGP。日常使用时,请把私钥保存在 GnuPG 等本地客户端中;浏览器页面不适合存放长期的私钥。该工具不会对消息签名,也不会验证签名。
PGP 加密 的工作原理
OpenPGP(RFC 4880/9580)使用混合加密:随机会话密钥用 AES 加密消息,而该会话密钥再被加密给每位收件人的加密子密钥(Curve25519 上的 ECDH 或 RSA)。数据包经 Base64 封装并带有 CRC 校验和。解密时用口令解锁私钥,恢复会话密钥,并验证带完整性保护的数据包。密钥生成会创建一个主签名密钥和一个绑定到你用户 ID 的加密子密钥(Curve25519 或 RSA-4096)。
常见用例
- 用安全联系人公布的 PGP 密钥(security.txt)加密消息
- 测试你服务器上的 GnuPG 配置能否解密 OpenPGP.js 的输出
- 同时为多个收件人加密同一条消息
- 为演示和教程生成一次性密钥对
安全提示
所有加密、解密和密钥生成都在你的浏览器中完成,不会上传任何内容。生成的私钥不会被保存——请自行保存——并且避免把长期使用的私钥粘贴到任何网页中。
常见问题
GnuPG 能解密这个输出吗?
可以。把它保存为 message.asc,并在密钥环中有收件人密钥的情况下运行 gpg --decrypt message.asc。
应该生成哪种密钥类型?
ECC Curve25519 速度快、体积小,GnuPG 2.1+ 和所有现代客户端都支持。RSA 4096 与非常老的软件兼容性最好,但更慢。
消息经过签名吗?
没有,它只是被加密。收件人无法知道是谁发送的;如果需要确认真实性,请用你自己的客户端签名。
如果我丢失了私钥的口令怎么办?
该密钥将无法再使用,加密给它的消息也无法读取。没有任何恢复方法。