检查密码是否能够解密对称加密的文件

检查密码是否能够解密对称加密的文件

我有大约二十个使用 CAST5 对称加密的文件。我有一个适用于所有文件的密码,我希望确认它确实有效。我编写了一个脚本来对每个文件执行检查。

read pass
for file in *.gpg ; do
   if ! gpg --batch --passphrase "$pass" -d "$file" &>/dev/null ; then
      echo "Passphrase invalid for '$file'."
   fi
done

我检查密码对每个文件是否有效的方法需要解密整个文件,这是非常慢的。有没有更快的方法来完成我想做的事情?

答案1

不幸的是,无法询问gpg-agent密钥是否受密码保护。但您不需要检查文件,而只需检查每个密钥一次。因此,您应该首先检查涉及哪些键。无需两次检查相同的密钥(通过使用它来解密两个文件)。

我必须承认,虽然我认为自己是 GnuPG 专家,但我并没有以优雅的方式完成这件事,因此我刚刚在 GnuPG 邮件列表上询问。当我从那里获得信息时,我会编辑这个答案。

编辑1

大师只花了几分钟......解决方案是:--list-only

gpg --status-fd 1 --list-only --list-packets file.gpg | 
  awk '$2 == "ENC_TO" {print "0x" $3; }'

为您提供密钥 ID。在尝试解密文件之前,请检查其收件人密钥之一是否在您已检查的密钥列表中。

操作缓慢的是非对称解密。尽管如此,您应该按大小对文件进行排序,并从最小的开始。

上面的命令为您提供子密钥(如果它是针对子密钥加密的)。如果你想变得非常好,那么你就不会比较子键,而是比较各自的主键。在每个正常安装中,主密钥和子密钥都具有相同的密码(对于 GnuPG,您甚至必须努力为它们提供不同的密码)。

相关内容