OpenPGP 文本加密工具

即使无法翻墙,即使所有聊天工具都被监控,也可以自由而安全地传递隐秘信息。

进入简单版

简单的文本加密、解密、密钥生成,适合基本需求的新手。

文本加密文本解密生成密钥
进入复杂版

另外支持对文本进行数字签名与签名验证。

加密解密数字签名验证签名生成密钥

基于开源项目 OpenPGP.js 制作的工具。所有数据均在当前浏览器本地处理,不会上传到网络。

使用教程

了解如何生成密钥、加密信息,以及使用私钥还原收到的内容。

打开这个工具的三种方法

  1. 直接访问官方网站(需翻墙) https://openpgp-cn.pages.dev/
  2. 从官方网站下载程序包 openpgp-cn.zip,解压到电脑,然后在文件夹里直接打开 index.html,不需要联网。
  3. 在手机上也可以解压后直接打开本地 index.html,但可能需要特定的手机浏览器(如 Chrome)。
  4. 可以把解压后的文件夹部署在任意网站的任意目录下。如果网站没有被墙,任何墙内的人都可以访问使用。
    • 程序包下载后可以随意复制传播,让其他人也可以免翻墙、免联网使用。注意,请确保给你程序的人值得信任,或者尽量从官网直接下载,避免被人植入恶意程序。

原理 - 公钥和私钥

OpenPGP 使用 "非对称加密" 的技术。接受信息的人,拥有一对相互关联的密钥:公钥只用于加密,不能解密,私钥才能用于解密。

  • 公钥可以交给需要向你发送加密信息的人。
  • 私钥必须由你自己保管,不应通过聊天或邮件发送给别人。
页面可以直接双击打开,不需要联网。密钥和文本不会上传到服务器。

举个例子

我要给 007 发送隐秘信息,步骤如下:

  1. 我向 007 询问他的公钥;
  2. 007 生成他自己的公钥和私钥;
  3. 007 把他的公钥发送给我,可以用明文,不怕被截获;
  4. 我把要发送的信息,用 007 的公钥加密;
  5. 我把加密后的信息发送给 007,可以用明文,不怕被截获;
  6. 007 收到加密信息,用他的私钥解密。

传送公钥和加密后的信息时,可以放心使用微信、电子邮件、或者任何受监控的软件。其他人即使截获了这些信息,只要没有私钥,就不能解密。

需要注意的是

  • 这个传输过程是单向的。007 的公钥和私钥,只能用来让别人向 007 发送信息。如果 007 想要回信给我,需要重复上面的步骤:我生成属于自己的公钥和私钥,再把我的公钥发送给 007。
  • 可以有很多人使用 007 的公钥,把信息发给 007。但是,007 不能使用一个接收者的公钥同时发消息给其他人;007 必须获得每个接收者各自的公钥,才能向他们发送信息。

生成密钥

第一次使用时,先创建属于自己的公钥和私钥。

打开“生成密钥”栏目。
填写姓名。默认值为 nobody;邮箱和私钥密码均可留空。
点击“一键生成密钥对”,等待公钥和私钥显示。
分别点击“下载公钥”和“下载私钥”,将 public-key.txtprivate-key.txt 文件保存到安全位置。也可以直接复制粘贴保存。
公钥以 -----BEGIN PGP PUBLIC KEY BLOCK----- 开头。
私钥以 -----BEGIN PGP PRIVATE KEY BLOCK----- 开头。注意不要混淆。

加密文本

使用接收方的公钥加密内容。只有持有对应私钥的人能够解密。

打开“文本加密”栏目。
粘贴接收方公钥,或点击“上传公钥”选择密钥文件。
在右侧输入要发送的文本,然后点击“加密文本”。
复制生成的加密信息,并通过任意渠道发送给接收方。
加密结果以 -----BEGIN PGP MESSAGE----- 开头。它不是密钥,可以直接发送。

加密时同时签名(复杂版)

勾选“加密时同时使用我的私钥签名”,再提供你自己的私钥及可选密码。接收方解密时,可以使用你的公钥确认消息确实由你发出且未被篡改。

解密文本

使用自己的私钥解密别人使用你的公钥加密的消息。

打开“文本解密”栏目。
粘贴私钥,或点击“上传私钥”选择对应的私钥文件。
粘贴完整的加密消息。如果私钥受密码保护,同时输入私钥密码。
点击“解密文本”,原文会显示在解密结果区域。
不要在不可信或他人控制的网页中输入私钥及密码。

解密时同时验证签名

如果发送方在加密时签了名,勾选“解密时同时使用发送方公钥验证签名”,并提供发送方公钥。成功后状态栏会明确显示“签名有效”。

签名(复杂版)

数字签名用于证明消息来自私钥持有者,并检测内容是否被修改;签名本身不会隐藏文本。

打开“签名”栏目。
粘贴或上传自己的私钥,并在需要时输入私钥密码。
输入待签名文本,点击“签名文本”。
将完整的带签名文本发送给对方。
任何人都能阅读签名文本。需要保密时,请使用“文本加密”中的“加密时同时签名”。

验证签名(复杂版)

使用签名者的公钥确认签名是否有效。

打开“验证签名”栏目。
粘贴或上传签名者的公钥。
粘贴完整的带签名文本,点击“验证签名”。
仅当页面显示“签名有效”时,才能确认签名与内容匹配。
验证有效只说明消息由对应私钥签署且签署后未被修改。仍需通过可信渠道确认该公钥确实属于声称的发送者。

密钥文件

上传功能支持文本和二进制 OpenPGP 密钥。

ASCII Armor 文本密钥

.asc.txt 文件,内容是可阅读文本,公钥通常以 BEGIN PGP PUBLIC KEY BLOCK 开头,私钥通常以 BEGIN PGP PRIVATE KEY BLOCK 开头。

二进制密钥

.pgp.gpg 文件可能是二进制格式。选择文件后,工具会自动解析并转换为页面可显示的文本格式。

安全建议

  • 私钥只保存在你控制的设备和加密备份中,不要给任何人。
  • 通过可信渠道,确定你拿到的收信人的公钥,真的属于收信人。避免使用被替换的公钥。
  • 发送密钥前再次确认:发送的是公钥,而不是私钥。
  • 在公共电脑使用后,关闭页面并清除下载文件和剪贴板内容。

常见问题

为什么提示“公钥无效”?

请确认粘贴或上传的是完整公钥,没有缺少开头、结尾或中间内容。

为什么无法解密?

常见原因包括私钥与公钥不匹配、私钥密码错误,或加密消息复制不完整。

刷新页面后内容还在吗?

不会。页面没有保存输入内容,刷新或关闭前请先复制或下载所需结果。

能把私钥发给对方吗?

不能。只发送公钥。私钥一旦泄露,其他人可能解密发给你的信息。