Không có phương pháp tích hợp để thực hiện việc này, nhưng thật đơn giản để tạo một bài kiểm tra không sửa đổi bất kỳ thứ gì và cho phép bạn chỉ kiểm tra cụm mật khẩu của mình.
Bạn không chỉ định, vì vậy tôi giả sử bạn đang sử dụng phiên bản GnuPG nhỏ hơn phiên bản 2 và đang dùng Linux với Bash cho trình thông dịch dòng lệnh của bạn.
tôi sẽ cung cấp cho các lệnh ở đây và dưới đây tôi sẽ giải thích từng phần không - (lưu ý: đây là cho GnuPG loạt phiên bản 1, xem dưới đây để biết GnuPG loạt v2)
echo "1234" | gpg --no-use-agent -o /dev/null --local-user <KEYID> -as - && echo "The correct passphrase was entered for this key"
gì đó trước tiên, hãy gửi một số văn bản để ký GnuPG với 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 thử nghiệm, 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 khóa với --no-use-agent
; điều này là quan trọng sau này bởi vì, tùy thuộc vào nhân viên chủ chốt của bạn, nó có thể không trả về "0" về 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 đặt dữ liệu đã ký trực tiếp vào tệp /dev/null
, có nghĩa là chúng tôi hủy 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 cửa sổ, bạn có thể phải cho phép nó ghi dữ liệu đã ký vào màn hình bằng cách bỏ qua phần -o /dev/null
.
Tiếp theo, chúng tôi chỉ định khóa mà chúng tôi muốn thực hiện thử nghiệm bằng cách sử dụng --local-user
. Bạn có thể sử dụng KeyID để có độ đặc hiệu tối đa hoặc sử dụng tên người dùng, tùy theo điều kiện nào phù hợp nhất với nhu cầu của bạn.
Tiếp theo, chúng tôi chỉ định -as
, cho phép chế độ đầu ra ascii và đặt chế độ ngữ cảnh để ký. Sau đó, -
chỉ yêu cầu GnuPG lấy dữ liệu được ký từ chuẩn, đây là phần đầu tiên của lệnh mà chúng tôi đã cung cấp echo "1234" |
.
Và cuối cùng, chúng tôi 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 cho 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 đó là đủ rõ ràng để bạn hiểu những gì đang diễn ra và cách bạn có thể sử dụng nó để thực hiện thử nghiệm bạn muốn thực hiện. Nếu bất kỳ phần nào không rõ ràng hoặc bạn không hiểu, tôi sẽ vui 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 phải được sửa đổi một chút, như vậy:
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 hy vọng cụm từ mật khẩu để được lấy 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ó tác dụng mong muốn; thay vào đó chúng ta cần phải nói với GnuPG v2 rằng chúng ta muốn chạy một tiến trình "batch", và lấy lại mật khẩu từ STDIN (standard in) bằng cách sử dụng tùy chọn --passphrase-fd 1
.
Điều này không hoạt động với gpg2, vì nó luôn yêu cầu tác nhân. Ngoài ra các đại lý ncurses bằng cách nào đó bị lẫn lộn bởi các đầu vào đường ống. Vì vậy, tôi chỉ sử dụng 'gpg --local-user -as'. Điều này chỉ cho phép tác nhân yêu cầu cụm từ mật khẩu và cho bạn biết nếu nó là chính xác (Sau đó, không có gì). –
BubuIIC
Bạn đúng là BubullC, phần lớn; với sửa đổi nhỏ cho các tùy chọn được thông qua, bạn có thể có kết quả tương tự bằng gpg2. Tôi đã sửa đổi câu trả lời của mình để hỗ trợ sự khác biệt giữa gpg và gpg2. – kylehuff
Hãy thử điều này cho GnuPG 2.1: 'gpg -o/dev/null - người dùng cục bộ -as <(echo 1234) && echo" Cụm mật khẩu chính xác đã được nhập cho khóa này "' –
starfry