gpg 解密错误 - 错误的会话密钥

gpg 解密错误 - 错误的会话密钥

我使用脚本批量加密了一些备份文件。操作系统是CentOS 7,gpg当前版本是2.0.22。该脚本的重要部分是:

enter code here`echo Enter passphrase
read PASS

for sourcefile in $(find /quitelarge/upload/proton/ -name *.gz); do

  echo $sourcefile
  destfile=$(echo $sourcefile | sed '1 s;/quitelarge/upload/proton;/quitelarge/upload/mega;')
  gpg --batch --passphrase "$PASS" -o $destfile.gpg -c $sourcefile

done

当我尝试解密其中一个文件时,发生了以下情况:

gpg -d agent.tar.gz.gpg
gpg: CAST5 encrypted data
gpg: encrypted with 1 passphrase
gpg: DBG: cleared passphrase cached with ID: SAEFA41D323D1BAE9
gpg: decryption failed: Bad session key

是的,我确实输入了正确的密码。在研究这个问题时,我发现参考:

  • 不同版本的 gpg 用于加密和解密 - 刚刚尝试使用相同版本的 gpg 进行加密/解密,同样的错误
  • Windoze 上的问题,密码中包含 cr/lf - 根据我的阅读,我不认为这是 Linux 问题

我一年多前测试过这个过程,我可以解密备份文件。也许 gpg 发生了一些变化(?)我不知所措。有什么建议么?

TIA,

ps 由于 CentOS 7 已经很老了,我尝试在 Linux Mint 20.3 机器上使用 gpg 2.2.19 解密文件。同样的问题。我怀疑这可能与 gpg 在某个时候升级到 gpg2 有关。其中 gpg 指向 gpg2 的链接。

我确实使用当前的 gpg 对新的纯文本文件运行了测试脚本,然后尝试解密。同样的问题。

答案1

当我回答自己的问题时我喜欢它,但不一定当问题是我自己造成的时......

会议事务让我很烦恼。我决定创建一个脚本来接受密码,加密文件,然后将文件解密为另一个名称 - 所有这些都在一个脚本内完成。它不起作用。我当时就想知道gpg到底是以什么方式运行的?

[ken@taylor20 upload]$ ps aux | grep gpg
ken       7422  0.3  0.0 121812  1064 ?        Ss   09:36   0:00 gpg-agent --daemon --use-standard-socket
ken       7598  0.0  0.0 112812   976 pts/0    S+   09:38   0:00 grep --color=auto gpg

我杀死了 gpg-agent 守护进程并且我的脚本运行了。然后我回到我试图解密的原始存档文件。还是没有运气。我检查了我的存档和加密脚本,发现了这行有问题的代码

PASS=testpasswordfornow

似乎当我上次进行一些更改时,我厌倦了每次运行测试时输入密码,因此我注释掉了读取语句并使用了上面的内容。当我回到生产环境时,我取消了读取的注释,但忘记删除上述语句,因此我覆盖了输入的密码:-( 我可以使用测试密码解密我的文件。

相关内容