ไม่มีวิธีการในตัวสำหรับการทำเช่นนี้ แต่ทำได้ง่ายพอที่จะสร้างการทดสอบที่ไม่แก้ไขอะไรเลยและให้คุณตรวจสอบข้อความรหัสผ่านของคุณได้
คุณไม่ได้ระบุดังนั้นฉันจะถือว่าคุณใช้ GnuPG เวอร์ชันน้อยกว่า v2 และอยู่บน Linux พร้อม Bash สำหรับตัวแปล commandline ของคุณ
ฉันจะให้คำสั่งที่นี่และด้านล่างฉันจะอธิบายว่าแต่ละส่วนทำอะไร - (หมายเหตุ: ต่อไปนี้ใช้สำหรับ GnuPG series เวอร์ชัน 1 ดูด้านล่างสำหรับ GnuPG series v2)
echo "1234" | gpg --no-use-agent -o /dev/null --local-user <KEYID> -as - && echo "The correct passphrase was entered for this key"
สิ่งที่ต้องทำอันดับแรกคือไพพ์ข้อความเพื่อลงชื่อเข้าใช้ GnuPG ด้วยecho "1234" |
- เพราะเราไม่ต้องการเซ็นชื่ออะไรเลยนี่เป็นเพียงการทดสอบดังนั้นเราจะเซ็นข้อความที่ไร้ประโยชน์
ต่อไปเราบอก gpg ว่าอย่าใช้คีย์เอเจนต์กับ--no-use-agent
; สิ่งนี้มีความสำคัญในภายหลังเนื่องจากขึ้นอยู่กับตัวแทนหลักของคุณอาจไม่ส่งคืน "0" ในความสำเร็จและนั่นคือทั้งหมดที่เราต้องการทำ - ยืนยันความสำเร็จของข้อความรหัสผ่านของคุณ
ต่อไปเราบอกให้ gpg ใส่ข้อมูลที่เซ็นชื่อลงใน/dev/null
ไฟล์โดยตรงซึ่งหมายความว่าเราทิ้งและไม่เขียนผลลัพธ์ไปยังเทอร์มินัล - หมายเหตุ: หากคุณไม่ได้ใช้ Linux / Unix บางรุ่นไฟล์นี้อาจไม่มีอยู่ บน windows คุณอาจต้องอนุญาตให้มันเขียนข้อมูลที่เซ็นชื่อลงบนหน้าจอโดยเว้น-o /dev/null
ส่วนนั้นไว้
--local-user 012345
ต่อไปเราจะระบุที่สำคัญเราต้องการที่จะทำแบบทดสอบของเราด้วยโดยใช้ คุณสามารถใช้ KeyID เพื่อความเฉพาะเจาะจงสูงสุดหรือใช้ชื่อผู้ใช้ตามความต้องการของคุณ
ต่อไปเราจะระบุ-as
ซึ่งเปิดใช้งานโหมดเอาต์พุต ascii และตั้งค่าโหมดบริบทสำหรับการเซ็นชื่อ -
หลังจากนั้นเพียงแค่บอก GnuPG echo "1234" |
ที่จะได้รับข้อมูลที่จะลงนามจากมาตรฐานในซึ่งเป็นส่วนแรกของคำสั่งที่เราให้
และสุดท้ายเรามี&& echo "A message that indicates success"
- "&&" หมายถึงหากคำสั่งก่อนหน้านี้สำเร็จให้พิมพ์ข้อความนี้ นี่เป็นเพียงการเพิ่มเพื่อความชัดเจนเนื่องจากความสำเร็จของคำสั่งข้างต้นจะถูกระบุโดยไม่มีเอาต์พุตเลย
ฉันหวังว่าจะชัดเจนพอที่คุณจะเข้าใจสิ่งที่เกิดขึ้นและคุณจะใช้มันในการทดสอบที่คุณต้องการทำอย่างไร หากส่วนใดไม่ชัดเจนหรือคุณไม่เข้าใจเรายินดีที่จะชี้แจง โชคดี!
[แก้ไข] - หากคุณใช้ GnuPG v2 คำสั่งด้านบนจะต้องได้รับการแก้ไขเล็กน้อยดังนี้:
echo "1234" | gpg2 --batch --passphrase-fd 1 -o /dev/null --local-user <KEYID> -as - && echo "The correct passphrase was entered for this key"
ด้วยเหตุนี้ GnuPG v2 จึงคาดว่าข้อความรหัสผ่านจะถูกดึงผ่านตัวแทนดังนั้นเราจึงไม่สามารถปิดการใช้งานเอเจนต์ด้วย--no-use-agent
และมีเอฟเฟกต์ที่ต้องการได้ แต่เราจำเป็นต้องบอก GnuPG v2 ว่าเราต้องการที่จะใช้กระบวนการ "ชุด" และดึงข้อความรหัสผ่านจาก STDIN (มาตรฐาน) --passphrase-fd 1
โดยใช้ตัวเลือก
gpg --local-user <KEYID> -as
. เพียงแค่นี้ให้ตัวแทนขอรหัสผ่านและบอกคุณว่าถูกต้องหรือไม่ (จากนั้นก็ไม่ทำอะไรเลย)