You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Windows环境下无法用GnuPG验证网页PGP签名文本的求助

解决Windows环境下PGP网页签名验证失败的问题

嘿,我刚好之前在日文版Windows环境里踩过一模一样的PGP签名验证的坑,来给你捋捋怎么解决!你的错误提示里的BAD signature大概率是两个问题叠加导致的:网页复制的格式被污染+导入的密钥和签名者不匹配。

第一步:先搞定密钥匹配的问题

你看错误提示里明确说了签名用的是RSA密钥C5787FA3EF733C40,归属是faramir.cl (It's a nickname, of course) <faramir.cl@gmail.com>,但你之前用gpg --search-key dshaw@jabberwocky.com导入的是另一个邮箱的密钥,完全不对应!

直接用密钥ID导入正确的公钥:

gpg --recv-keys C5787FA3EF733C40

第二步:干净获取并保存签名文件

从网页直接复制文本很容易被浏览器或系统偷偷修改换行符/编码,这是Windows下最常见的坑:

  1. 不要直接复制网页渲染的文本,右键网页选择「查看页面源代码」(或按F12打开开发者工具切换到源代码标签)
  2. 在源代码里精准找到从-----BEGIN PGP SIGNED MESSAGE-----到-----END PGP SIGNATURE-----的完整块,确保连首尾的分隔线都完整复制,不要漏任何字符
  3. 用VS Code粘贴内容后,做两个关键设置:
    • 右下角编码选择UTF-8(别选带BOM的UTF-8)
    • 右下角换行选择LF(不要用Windows默认的CRLF)
  4. 保存为message.asc,文件名尽量用英文,避免特殊字符

第三步:重新验证

完成上面两步后,再运行验证命令:

gpg --verify message.asc

额外的排查小技巧

如果还是不行,先检查文件的换行符是否真的是LF:

# 检查文件里有没有CRLF换行
Get-Content message.asc -Raw | Select-String -Pattern "`r`n"
# 如果有输出,手动转成LF
(Get-Content message.asc -Raw) -replace "`r`n", "`n" | Set-Content message.asc -NoNewline -Encoding UTF8

我当初就是因为直接复制网页文本导致换行符被转成CRLF,加上导入错了密钥,才出现和你一模一样的错误,按照上面的步骤操作应该就能解决啦!

内容的提问来源于stack exchange,提问作者hani

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 04:16:52