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 <[email protected]>" │
│ 3072-bit RSA key, ID 86B9E988681A51D1, │
│ created 2021-12-15. │
│ │
│ │
│ Passphrase: __________________________________________________ │
│ │
│ <OK> <Cancel> │
└────────────────────────────────────────────────────────────────┘
无需在控制台内的 GUI 中手动输入密码,而是可以通过管道输入,gpg --dry-run --passwd <key_id>
并且可以返回其输出,验证给定的密码是否正确?
答案1
尝试
gpg --batch --pinentry-mode loopback --passphrase-file=/home/user/.gpg_pass.txt --dry-run --passwd your-keyid
正如手册页还说这些是允许从文件获取密码的选项。
请注意,如果您想从脚本内部执行此操作,我假设它根据结果设置返回代码,因此请检查返回代码($?
在大多数 shell 中,echo $?
如果您想手动检查,请使用)。