Tidak ada metode bawaan untuk melakukan ini, tetapi cukup sederhana untuk membuat tes yang tidak mengubah apa pun dan memungkinkan Anda untuk hanya memeriksa frasa sandi Anda.
Anda tidak menentukannya, jadi saya akan menganggap Anda menggunakan GnuPG versi kurang dari v2 dan menggunakan Linux dengan Bash untuk penerjemah baris perintah Anda.
Saya akan memberikan perintah di sini dan di bawah ini saya akan menjelaskan apa yang dilakukan setiap bagian - (catatan: berikut ini untuk seri GnuPG versi 1, lihat di bawah untuk seri GnuPG v2)
echo "1234" | gpg --no-use-agent -o /dev/null --local-user <KEYID> -as - && echo "The correct passphrase was entered for this key"
Apa yang dilakukan adalah pertama, pipa beberapa teks untuk masuk ke GnuPG dengan echo "1234" |
- karena kami tidak benar-benar ingin menandatangani apa pun, ini hanya tes, jadi kami akan menandatangani beberapa teks yang tidak berguna.
Selanjutnya, kami memberi tahu gpg untuk tidak menggunakan agen kunci dengan --no-use-agent
; ini penting nanti karena, tergantung pada agen kunci Anda, ini mungkin tidak mengembalikan "0" pada keberhasilan, dan hanya itu yang ingin kami lakukan - verifikasi keberhasilan frasa sandi Anda.
Selanjutnya, kami memberi tahu gpg untuk meletakkan data yang ditandatangani langsung ke dalam /dev/null
file, artinya kami membuangnya dan tidak menulis hasilnya ke terminal - CATATAN: jika Anda tidak menggunakan beberapa varian Linux / Unix, file ini mungkin tidak ada. Di windows Anda mungkin harus mengizinkannya untuk menulis data yang ditandatangani ke layar dengan hanya menghilangkan -o /dev/null
bagiannya.
Selanjutnya, kami menentukan kunci yang ingin kami uji dengan menggunakan --local-user 012345
. Anda dapat menggunakan KeyID untuk kekhususan maksimum, atau menggunakan nama pengguna, mana saja yang paling sesuai dengan kebutuhan Anda.
Selanjutnya kita tentukan -as
, yang mengaktifkan mode keluaran ascii, dan menyetel mode konteks untuk penandatanganan. Selanjutnya -
hanya memberitahu GnuPG untuk mendapatkan data yang akan ditandatangani dari standar-in, yang merupakan bagian pertama dari perintah yang kami berikan echo "1234" |
.
Dan terakhir, kita memiliki && echo "A message that indicates success"
- "&&" artinya, jika perintah sebelumnya berhasil, cetak pesan ini. Ini hanya ditambahkan untuk kejelasan, karena keberhasilan perintah di atas akan ditunjukkan dengan tidak adanya keluaran sama sekali.
Saya harap itu cukup jelas bagi Anda untuk memahami apa yang sedang terjadi, dan bagaimana Anda dapat menggunakannya untuk melakukan pengujian yang ingin Anda lakukan. Jika ada bagian yang tidak jelas atau Anda tidak mengerti, saya akan dengan senang hati menjelaskan. Semoga berhasil!
[EDIT] - Jika Anda menggunakan GnuPG v2, perintah di atas perlu diubah sedikit, seperti:
echo "1234" | gpg2 --batch --passphrase-fd 1 -o /dev/null --local-user <KEYID> -as - && echo "The correct passphrase was entered for this key"
Alasannya adalah, GnuPG v2 mengharapkan frasa sandi diambil melalui agen, jadi kita tidak dapat menonaktifkan penggunaan agen dengan --no-use-agent
dan mendapatkan efek yang diinginkan; sebaliknya kita perlu memberi tahu GnuPG v2 bahwa kita ingin menjalankan proses "batch", dan mengambil frasa sandi dari STDIN (standar dalam) dengan menggunakan opsi --passphrase-fd 1
.
gpg --local-user <KEYID> -as
. Ini hanya memungkinkan agen meminta frasa sandi dan memberi tahu Anda apakah itu benar (Kemudian tidak melakukan apa-apa).gpg -o /dev/null --local-user <KEYID> -as <(echo 1234) && echo "The correct passphrase was entered for this key"
--passphrase-fd 1
? membaca dari stdout? Ini bekerja untuk saya:gpg2 -aso - <(echo 1234); echo $?
. Gunakanecho RELOADAGENT | gpg-connect-agent
untuk melupakan kata sandi.Ini adalah baris perintah yang lebih pendek untuk memeriksa apakah frasa sandi OK:
sumber
gpg-agent
aktif (yang kebanyakan orang miliki) dan Anda masuk dengan benar, ini tidak akan meminta frasa sandi.Bagi saya, cara sederhana untuk memeriksa frasa sandi adalah dengan menggunakan
gpg --passwd
singkatan. Ia mencoba untuk mengubah frasa sandi dan langkahnya adalah untuk mengkonfirmasi frasa sandi lama, dan kemudian Anda dapat mengklik 'batal' pada prompt frasa sandi baru dan ini membuat frasa sandi tetap utuh.sumber
gpg-agent
aktif atau tidak.Peringatan jangan gunakan gema
gpg -o /dev/null
seperti yang disarankan oleh jawaban teratas di sini. Ini akan menyebabkan / dev / null memiliki izin yang tidak valid dan merusak/dev/null
file. Anda dapat memverifikasi izin file / dev / null saat menjalankan perintah ini untuk membuktikannya.Anda dapat menggunakan ini:
Saya juga membuat skrip bash untuk ini (Yang ini bekerja dengan Centos 8). Script ini akan meminta kata sandi, jika tidak valid akan terus meminta untuk memasukkan kata sandi yang valid. Juga jika Anda memasukkan KEY_ID yang salah atau tidak ada sebagai argumen, itu juga dapat memvalidasinya:
Contoh keluaran jika tidak ada kata sandi yang di-cache di gpg-agent:
Contoh keluaran jika frasa sandi yang dimasukkan tidak valid (akan terus bertanya):
Contoh keluaran jika frasa sandi yang valid dimasukkan:
Ketika frasa sandi yang valid di-cache, kali berikutnya Anda menjalankan skrip ini, Anda tidak akan diminta memasukkan frasa sandi. Jadi skrip ini memberikan solusi untuk pertanyaan Anda; "Cukup konfirmasikan bahwa saya menggunakan frasa sandi yang benar"
sumber