gpg:解密失败:错误的会话密钥

gpg: decryption failed: Bad session key

我正在尝试使用 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 版本 1.4.11 完成的,解密是使用 gpg 版本 2.0.22。

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

我找到了这个,这似乎是我在其他任何地方都找不到的神奇之处:

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

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

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

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