GnuPG數字簽名與驗證應用
阿新 • • 發佈:2018-12-15
先準備好要簽名的檔案。
[[email protected] gnupg-2.1.4]# cat message.txt
hello
gpg
一 數字簽名一個檔案的方法A
1 使用如下命令對message.txt進行數字簽名
[[email protected] gnupg-2.1.4]# gpg -a -b message.txt You need a passphrase to unlock the secret key for user: "cakin (cakin) <[email protected]>" 2048-bit RSA key, ID F15FE9FE, created 2018-10-14
其中引數
-a 表示輸出文字檔案格式。
-b 表示以生成獨立的簽名檔案的方式進行簽名。
命令執行完畢之後,會在當前資料夾裡產生一個 message.txt.asc 的檔案,這個檔案即簽名。現在我應該把原資訊檔案 message.txt 連同簽名檔案 message.txt.asc 一起寄給你,然後你使用如下命令檢驗:
[[email protected] gnupg-2.1.4]# gpg --verify message.txt.asc
gpg: Signature made Sun 14 Oct 2018 03:04:55 PM CST using RSA key ID F15FE9FE
gpg: Good signature from "cakin (cakin) < [email protected]>"
其中最重要的是 “Good signature” 字樣,表示通過檢驗,否則表示沒通過檢驗(即意味著原資訊的內容被篡改或者原資訊不是我發出的)。
我們接著看看message.txt.asc的內容
[[email protected] gnupg-2.1.4]# cat message.txt.asc -----BEGIN PGP SIGNATURE----- Version: GnuPG v2.0.22 (GNU/Linux) iQEcBAABAgAGBQJbwuqXAAoJEAjJO/PxX+n+YXMH/25lvl2efXPq7apl7yHFPlod 5esTABD3xadGpcJJpkVOvpTLsZHBcf0JvtAeNCebL1oOVwpUAyvtH8G7Q+F5hXz8 YzSbb+ogvQdJicAdku5v8ZAlP5NQqvyu4X5xDQjX0FFBoI8jsZUKoeu7dIeVby/K GbZFELH4vgigoNKARy5WJUW7Yu/TtU/Dw7+y9bBELPJn0j8tMp12QplB25JezA8r 2hZZAUU67jsHQZIoN9zx2VoNCpQnu/tFqDjN4v1BoLIbaRfAwAwQaxkZ0p+ud8El M6HTVBqIRghtFKTnA8qB9VysirF7r8zArWwBbPmwO8Y/WgbioCToYJ/plahfwqY= =kIf3 -----END PGP SIGNATURE-----
二 數字簽名一個檔案的方法B
如果不想生成一個獨立的簽名檔案,則還可以用如下的命令進行簽名。
[[email protected] gnupg-2.1.4]# gpg -a --clearsign message.txt
You need a passphrase to unlock the secret key for
user: "cakin (cakin) <[email protected]>"
2048-bit RSA key, ID F15FE9FE, created 2018-10-14
File `message.txt.asc' exists. Overwrite? (y/N) y
跟方法A不同的地方是用引數 –clearsign 替代了引數 -b。引數 clearsign 表示將簽名和原資訊合併在一起,並生成一個新檔案。
命令執行後同樣會生成一個檔案 message.txt.asc,內容如下:
[[email protected] gnupg-2.1.4]# cat message.txt.asc
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
hello
gpg
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2.0.22 (GNU/Linux)
iQEcBAEBAgAGBQJbwuvZAAoJEAjJO/PxX+n+ZloIALIEPLMOM1x7H97N3qzkrSoK
7uWe4LiwcMYeazxNmVrN03Av4MMrqTyIL3vctFQi5+xtERRk8MBe96WQJNAZICch
W9dTPMLYMBZp8QFOko5pujiGmYwirEVS4qEZ3DwOuOgFTrKsmhbI09OlGWt2bNvR
V1+2BHBEzB81qhBAiACgploNvpGnFbnOPOkYuTbGQpp5LrVUyJC+tbGoZEZriWS4
L+/jd4xcAjSuRAzd9l0UH06qJjigv9kjW1wXHKDrdUTe/weHhP4kMWBOlFOctoYq
F7rHjtrZEjSnOfg/7GQqv440gkR03RrWjNUq4dh+FgNsAQtAL4vu3httVCq6tok=
=qjek
-----END PGP SIGNATURE-----
數字簽名驗證,還是使用如下命令
[[email protected] gnupg-2.1.4]# gpg --verify message.txt.asc
gpg: Signature made Sun 14 Oct 2018 03:10:17 PM CST using RSA key ID F15FE9FE
gpg: Good signature from "cakin (cakin) <[email protected]>"
如果要提取原始資訊,則使用如下命令
[[email protected] gnupg-2.1.4]# gpg --output message-original.txt -d message.txt.asc
gpg: Signature made Sun 14 Oct 2018 03:10:17 PM CST using RSA key ID F15FE9FE
gpg: Good signature from "cakin (cakin) <[email protected]>"
[[email protected] gnupg-2.1.4]# cat message-original.txt
hello
gpg
三 參考