Không có phương pháp cài sẵn nào để thực hiện việc này, nhưng nó đủ đơn giản để tạo một bài kiểm tra không sửa đổi bất cứ điều gì và cho phép bạn chỉ cần kiểm tra cụm mật khẩu của mình.
Bạn không chỉ định, vì vậy tôi sẽ giả sử bạn đang sử dụng phiên bản GnuPG nhỏ hơn v2 và đang sử dụng Linux với Bash cho trình thông dịch dòng lệnh của bạn.
Tôi sẽ đưa ra lệnh ở đây và bên dưới tôi sẽ giải thích những gì mỗi phần thực hiện - (lưu ý: phần sau dành cho dòng GnuPG phiên bản 1, xem bên dưới cho dòng GnuPG v2)
echo "1234" | gpg --no-use-agent -o /dev/null --local-user <KEYID> -as - && echo "The correct passphrase was entered for this key"
Điều đó làm là đầu tiên, viết một số văn bản để ký vào GnuPG echo "1234" |
- bởi vì chúng tôi không thực sự muốn ký bất cứ điều gì, đây chỉ là một bài kiểm tra, vì vậy chúng tôi sẽ ký một số văn bản vô dụng.
Tiếp theo, chúng tôi yêu cầu gpg không sử dụng tác nhân chính với --no-use-agent
; điều này rất quan trọng sau này vì tùy thuộc vào tác nhân chính của bạn, nó có thể không trả về "0" khi thành công và đó là tất cả những gì chúng tôi muốn làm - xác minh thành công của cụm mật khẩu của bạn.
Tiếp theo, chúng tôi yêu cầu gpg đưa dữ liệu đã ký trực tiếp vào /dev/null
tệp, nghĩa là chúng tôi loại bỏ nó và không ghi kết quả vào thiết bị đầu cuối - LƯU Ý: nếu bạn không sử dụng một số biến thể của Linux / Unix, tệp này có thể không tồn tại. Trên windows, bạn có thể chỉ cần cho phép nó ghi dữ liệu đã ký vào màn hình bằng cách bỏ qua -o /dev/null
phần đó.
Tiếp theo, chúng tôi chỉ định khóa chúng tôi muốn thực hiện kiểm tra bằng cách sử dụng --local-user 012345
. Bạn có thể sử dụng KeyID để có độ đặc hiệu cao nhất hoặc sử dụng tên người dùng, tùy theo nhu cầu của bạn.
Tiếp theo, chúng tôi chỉ định -as
, bật chế độ đầu ra ascii và đặt chế độ ngữ cảnh cho việc ký. Sau -
đó, chỉ yêu cầu GnuPG lấy dữ liệu được ký từ standard-in, đây là phần đầu tiên của lệnh chúng tôi đã đưa ra echo "1234" |
.
Và cuối cùng, chúng ta có && echo "A message that indicates success"
- "&&" có nghĩa là, nếu lệnh trước đó thành công, hãy in thông báo này. Điều này chỉ được thêm vào để rõ ràng, bởi vì sự thành công của lệnh trên nếu không sẽ được chỉ ra bởi không có đầu ra nào cả.
Tôi hy vọng điều đó đủ rõ ràng để bạn hiểu điều gì đang xảy ra và cách bạn có thể sử dụng nó trong quá trình kiểm tra mà bạn muốn thực hiện. Nếu bất kỳ phần nào chưa rõ ràng hoặc bạn chưa hiểu, tôi sẽ sẵn lòng làm rõ. Chúc may mắn!
[EDIT] - Nếu bạn đang sử dụng GnuPG v2, lệnh trên sẽ cần được sửa đổi một chút, như sau:
echo "1234" | gpg2 --batch --passphrase-fd 1 -o /dev/null --local-user <KEYID> -as - && echo "The correct passphrase was entered for this key"
Lý do là, GnuPG v2 mong muốn cụm mật khẩu được truy xuất thông qua một tác nhân, vì vậy chúng tôi không thể vô hiệu hóa việc sử dụng tác nhân với --no-use-agent
và có hiệu quả mong muốn; thay vào đó, chúng ta cần nói với GnuPG v2 rằng chúng ta muốn chạy quy trình "hàng loạt" và truy xuất cụm mật khẩu từ STDIN (tiêu chuẩn trong) bằng cách sử dụng tùy chọn --passphrase-fd 1
.
gpg --local-user <KEYID> -as
. Điều này chỉ cho phép nhân viên yêu cầu cụm mật khẩu và cho bạn biết nếu nó đúng (Sau đó không làm gì cả).