如何从文件中检查 gpg 的密码?

如何从文件中检查 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>


来自:mangpg

--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 <[email protected]>"                                      │
 │ 3072-bit RSA key, ID 86B9E988681A51D1,                         │
 │ created 2021-12-15.                                            │
 │                                                                │
 │                                                                │
 │ Passphrase: __________________________________________________ │
 │                                                                │
 │         <OK>                                    <Cancel>       │
 └────────────────────────────────────────────────────────────────┘

无需在控制台内的 GUI 中手动输入密码,而是可以通过管道输入,gpg --dry-run --passwd <key_id>并且可以返回其输出,验证给定的密码是否正确?


有关的:https://stackoverflow.com/q/11381123/2402577

答案1

尝试

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

正如手册页还说这些是允许从文件获取密码的选项。

请注意,如果您想从脚本内部执行此操作,我假设它根据结果设置返回代码,因此请检查返回代码($?在大多数 shell 中,echo $?如果您想手动检查,请使用)。

相关内容