Pipe
如何從文件中檢查 gpg 的密碼?
我想檢查我
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>
並且可以返回其輸出,驗證給定密碼片語是否正確?
嘗試
gpg --batch --pinentry-mode loopback --passphrase-file=/home/user/.gpg_pass.txt --dry-run --passwd your-keyid
正如手冊頁所說,這些是允許從文件中獲取密碼的選項。
請注意,如果您想從腳本中執行此操作,我假設它會根據結果設置返回碼,因此請檢查返回碼(
$?
在大多數 shell 中,echo $?
如果您想手動檢查,請使用)。