Shell-Script

檢查密碼是否能夠解密對稱加密的文件

  • May 3, 2013

我有大約 20 個用 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

我檢查密碼是否對每個文件有效的方法需要解密整個文件,這非常慢。有沒有更快的方法來做我想做的事情?

不幸的是,沒有辦法詢問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,您甚至必須努力為它們提供不同的密碼)。

引用自:https://unix.stackexchange.com/questions/74496