GPG 解密:错误的会话密钥/变量未设置/感叹号

GPG 解密:错误的会话密钥/变量未设置/感叹号

我正在尝试解密 gpg 文件,但不断收到以下错误:

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

后来我意识到 gpg 密码(由脚本设置)中有一个感叹号

密码短语="我的密码"

通过 TTY 设置时,bash 会抱怨

-bash:!pass:未找到事件

当我回显该变量时,它未设置。

user@host:~$ echo $passphrase

user@host:~$

因此,变量是未知的,我认为这就是我无法解密文件的原因。

我尝试使用以下密码:

  • 我的通行证
  • 我的
  • !经过
  • '我的!通行证'
  • -bash:!pass:未找到事件
  • bash:!pass:未找到事件
  • 狂欢:
  • 重击:
  • 未找到事件

可以肯定的是,我刚刚在这里学到了一个非常痛苦的教训,但值得一试。

有人能帮忙吗:

  1. 如果您尝试使用未设置的变量,bash 会如何处理它?
  2. 脚本如何处理未设置的变量?
  3. 除了密码我还能尝试其他什么吗?
  4. 是否有一个 ASCII / UTF 空格代码可以代替密码?

答案1

有几条评论值得注意。

  1. “... gpg 密码(由脚本设置)”。我认为您没有编写该脚本。请发布该脚本。是否有任何使用说明?
  2. passphrase="my!pass"。这并不意味着“使用 ! 作为字符串的一部分”。!pass意思是“读取历史记录,并获取以 开头的最后一个命令pass”。如果历史记录中没有以 开头的命令pass,则会引发错误bash: !pass: event not found,就像您在命令行中获取的那样。这就是为什么我猜你没有编写脚本。它是为历史记录中有一些以 开头的命令的情况而设计的pass
  3. “通过 TTY 设置时(我猜你执行了passphrase="my!pass",bash 抱怨...当我回显变量时,它未被设置”。如上所述,引发了一个错误。但还有两件事发生:1)命令未执行。即,您甚至没有得到“my”(您可能期望得到“my”=“my”+空字符串)作为 的值passphrase,它保持未设置状态。2)该命令甚至没有添加到历史记录中。

至于您的一些问题:

  1. 如果您尝试使用未设置的变量,bash 会如何处理它?bash 通常将其替换为空字符串。但一般来说,这取决于如何使用它,它可能会引发错误,您可能会有一个句子,在未设置的情况下将其值替换为默认值,等等。对此没有唯一的答案。
  2. 脚本如何处理未设置的变量?同上。

我不知道您的其他问题,但这也许有助于您理解问题并解决它。

相关内容