Pipe

如何從文件中檢查 gpg 的密碼?

  • December 22, 2021

我想檢查我user-id位於文件中的密碼是否正確。我已將密碼儲存在一個文件 ( /home/user/.gpg_pass.txt) 中,而不是將其用作:

gpg --verbose --batch --yes --pinentry-mode loopback \
   --passphrase-file=/home/user/.gpg_pass.txt
   --decrypt <file>

在使用此命令之前,我想驗證文件中的密碼是否正確輸入。我試過了,但沒有幫助:

cat /home/user/.gpg_pass.txt | gpg --dry-run --passwd <key_id>


來自:man_gpg

--passwd user-id
      Change the passphrase of the secret key belonging to the certificate 
      specified as user-id.  This is a shortcut for the sub-command passwd  
      of  the edit  key  menu.  When using together with the option --dry-run 
      this will not actually change the passphrase but check that the current 
      passphrase is correct.

當我輸入:

$ gpg --dry-run --passwd <key_id>

兩次以下視窗顯示我輸入密碼,(如果輸入錯誤的密碼,它會 Bad Passphrase (try 2 of 3)在 GUI 控制台中顯示):

┌────────────────────────────────────────────────────────────────┐
│ Please enter the passphrase to unlock the OpenPGP secret key:  │
│ "Alper <alper@gmail.com>"                                      │
│ 3072-bit RSA key, ID 86B9E988681A51D1,                         │
│ created 2021-12-15.                                            │
│                                                                │
│                                                                │
│ Passphrase: __________________________________________________ │
│                                                                │
│         <OK>                                    <Cancel>       │
└────────────────────────────────────────────────────────────────┘

與其在控制台內手動輸入密碼片語,不如將其作為管道輸入,gpg --dry-run --passwd <key_id>並且可以返回其輸出,驗證給定密碼片語是否正確?


相關:https ://stackoverflow.com/q/11381123/2402577

嘗試

gpg --batch --pinentry-mode loopback --passphrase-file=/home/user/.gpg_pass.txt --dry-run --passwd your-keyid

正如手冊頁所說,這些是允許從文件中獲取密碼的選項。

請注意,如果您想從腳本中執行此操作,我假設它會根據結果設置返回碼,因此請檢查返回碼($?在大多數 shell 中,echo $?如果您想手動檢查,請使用)。

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