PGP 公钥检查器
在浏览器里解码 ASCII armor 格式的 OpenPGP 公钥块,把里面真正的内容摆出来。你会看到主密钥和每个子密钥的完整指纹——按规范定义的方式亲自算出来的,而不是从某个标签上读来的——以及长密钥 ID、算法与长度、创建日期、自签名中若带有则显示的过期日期,还有绑定到该密钥的所有用户 ID。查看它的理由几乎总是同一个:你手上有一份来自项目官网、密钥服务器或 Debian 仓库的指纹,需要确认眼前这个块是不是那把密钥。它还会校验 armor 的 CRC-24 校验和,也就是末尾 `=` 后面那四个字符——它存在的意义正是抓出那些在聊天窗口或 wiki 页面里丢了一行的块:一把除此之外看上去毫无破绽的损坏密钥。它也会重复那条真正重要的建议:比对完整指纹,绝不要用短密钥 ID,因为 32 位的标识符用一台笔记本就能构造碰撞,而且已经有人为 strong set 中的每一把密钥都公开了一个对得上的伪造件。如果你误贴了私钥块,它会拒绝处理并明确告知。不会上传,密钥完全在本页面解析。
使用方法
- 粘贴 armor 格式的公钥块,或把 .asc、.gpg 文件拖到输入框上。
- 把完整指纹——全部四十个十六进制字符——和密钥持有者公布的值逐位比对。
- 检查创建日期和过期日期;已过期的密钥无法验证过期之后产生的签名。
- 看用户 ID 了解这把密钥声称的姓名与地址,看子密钥列表了解实际负责签名或加密的是哪一把。
- 琥珀色标出的内容,最好在信任这把密钥之前先弄清楚。
常见问题
- 为什么要比对指纹而不是密钥 ID?
- 因为短密钥 ID 只是指纹的最后 32 位,而 32 位不足以标识任何东西。用普通硬件造出一把短 ID 相同的另一把密钥只要几分钟,2019 年 Evil 32 项目正是对 PGP strong set 中的每一把密钥都这么做了一遍并公开了结果,所以你关心的那把密钥的碰撞版本可能已经存在。长密钥 ID 是 64 位,好一些,但仍然不是可以作为信任依据的安全值。版本 4 密钥的完整指纹是 160 位,各个项目把这个值放在官网上是有原因的。
- 块末尾的 `=XXXX` 那一行是什么?
- 是二进制数据的 CRC-24 校验和,RFC 4880 把它定义为 armor 格式的一部分。它用来抓出把密钥搬来搬去时的日常事故:被聊天客户端吞掉的一行、把块重新排版的 wiki、漏掉最后一行的粘贴。base64 会毫不在意地解码一个中间少了一行的块,包解析器有时也能通过,所以没有这个校验和,一把损坏的密钥看起来会很像回事。本工具会校验它,对不上就告诉你。要注意这只是针对意外的完整性校验,不是签名,挡不住有人故意把密钥掉包。
- 在这里粘贴密钥安全吗?
- 公钥安全——它本来就是要公开的,而且本页面不会把它发送到任何地方。解析和生成指纹的 SHA-1 计算全部在你的浏览器里完成,你可以打开页面后断开网络再粘贴一把密钥来验证,它照常工作。私钥则是另一回事:不要把私钥粘贴到任何网页,包括本页。如果块以 PRIVATE KEY 开头,本工具会拒绝处理,而不是默默解析。
- SHA-1 都被攻破了,为什么指纹还用它?
- 因为版本 4 的密钥格式就是这么定义的,而指纹必须在任何地方算出来都一样,否则谁也没法互相比对。SHA-1 在抗碰撞性上已被攻破,这在攻击者能同时控制两个输入时会成为问题——对指纹来说这是实实在在的隐患,正因如此 RFC 9580 中新的版本 6 密钥格式改用了 SHA-256。本工具按密钥自身的版本来计算,所以 v4 密钥得到的就是 gpg 和各家密钥服务器会显示的那个 SHA-1 指纹。
- 主密钥和子密钥有什么区别?
- 主密钥是身份:它承载用户 ID,并为其余一切做认证。子密钥挂在它下面,处理日常工作,通常一把用于签名、一把用于加密,这样主密钥就可以离线保存。这就是密钥块里常常出现好几个指纹的原因,也是邮件签名里那把密钥可能和项目官网上那把对不上的原因——那份签名是子密钥做的。这里会把两者连同各自的指纹一并列出,方便你分辨。
- 它能检查密钥是否已被吊销,或者是谁签名的吗?
- 不能。它读取数据包并报告找到的密钥、用户 ID 和日期,但不验证签名、不追踪认证、也不解析信任网络——这些都需要其他密钥,吊销状态还需要向密钥服务器查询。昨天刚被吊销的密钥,在这里解析出来和前一天一模一样。要查吊销状态和验证签名,需要 gpg 以及从密钥服务器重新拉取。
相关工具
SSH 公钥检查器
解析 SSH 公钥以及 authorized_keys、known_hosts 行:算法、密钥长度、SHA256 与 MD5 指纹、注释和选项。
JWK 与 PEM 互转工具
把 JWK 或整个 JWKS 转成 PEM 公钥,也可反向转换,并给出每个密钥的 RFC 7638 指纹——全部在浏览器中完成。
PKCS#12 密钥库检查器
在浏览器里打开 .p12 / .pfx:输入密码前先看 MAC 和加密算法,输入后查看证书链、私钥,以及私钥与证书是否匹配。
UUID 生成器
批量生成随机的版本 4 UUID,并支持复制。
ULID / NanoID / CUID2 生成器
批量生成 ULID、NanoID、CUID2——UUID 的现代替代,更短、可排序或更耐碰撞。
Snowflake ID 解码器 (Discord, Twitter)
将 Discord、Twitter/X 或 Instagram 的 Snowflake ID 解码为创建时间戳、worker/进程或数据中心、序列号 — 含自定义纪元模式 — 全部在浏览器内完成。