1. 程式人生 > >GnuPG數字簽名與驗證應用

GnuPG數字簽名與驗證應用

先準備好要簽名的檔案。

[[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

三 參考