【问题标题】:gpg: decryption failed: Bad session keygpg:解密失败:错误的会话密钥
【发布时间】:2015-05-19 06:17:00
【问题描述】:

我正在尝试使用 gpg 解密文件并收到此错误:

$ gpg --no-tty --batch --verbose --decrypt --passphrase foo file.enc
Version: GnuPG v1.4.11 (GNU/Linux)
gpg: armor header: 
gpg: CAST5 encrypted data
gpg: encrypted with 1 passphrase
gpg: decryption failed: Bad session key

我尝试重新加载 gpg 代理,但没有成功:

$ gpgconf --reload gpg-agent

如何解决?

【问题讨论】:

  • 请添加gpg --list-packets < file.enc的输出。删除你喜欢的任何关键信息,我最感兴趣的是结构。
  • 此错误消息的一个可能原因是您使用了错误的密码。

标签: gnupg


【解决方案1】:

记录一下,如果有人也会遇到这个问题:

问题是,加密是使用 gpg 版本 1.4.11 完成的,而解密是使用 gpg 版本 2.0.22。

将加密升级到 gpg2 (2.0.17) 后,一切正常。

【讨论】:

  • 谢谢,这正是我的问题。升级到 gpg2 并将别名从 gpg2 重命名为 gpg 解决了这个问题。
  • 如果有人(比如我)拥有加密数据并需要解密它们怎么办?我无法将加密器更新到相同的版本..
  • @redjamjar 我想你唯一的机会是使用旧版本进行解密。应该可以并行安装和运行不同的 gpg 版本。
【解决方案2】:

我找到了这个,这似乎是我在其他任何地方都找不到的魔法:

尝试将--pinentry-mode loopback 添加到您的命令中。也许有一个 您的安装 / pinentry 程序出现问题,导致它无法启动或 您不小心使用了提供错误的虚拟/测试 pinentry 密码。

【讨论】:

  • 对我有用的确切命令:gpg --pinentry loopback --decrypt MYFILE.gpg
【解决方案3】:

我在批处理模式下使用密码文件加密了我的文件。当我尝试解密我的文件时,我收到了可怕的“错误会话密钥”消息。

我用 Vim for Windows 创建了一个密码短语文件,即使我没有按回车键,Vim 也将 \r\n 留在了文本行的末尾。 gpg 忽略了 \n 但保留了 \r 作为密码的一部分!

可以诱导 Vim for Windows 不离开 \r\n,但使用记事本在行尾不带回车会更容易。最好使用 hexdump 检查您的密码文件以确保。在使用命令行提供密码时,还有其他方式会受到 \r\n 问题的伤害,因此请注意。

【讨论】: