GnuPG数字签名与验证应用

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/chengqiuming/article/details/83047967

先准备好要签名的文件。

[root@centos gnupg-2.1.4]# cat message.txt
hello
gpg

一 数字签名一个文件的方法A

1 使用如下命令对message.txt进行数字签名

[root@centos 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 一起寄给你,然后你使用如下命令检验:

[root@centos 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的内容

[root@centos 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

如果不想生成一个独立的签名文件,则还可以用如下的命令进行签名。

[root@centos 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,内容如下:

[root@centos 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-----

数字签名验证,还是使用如下命令

[root@centos 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]>"

如果要提取原始信息,则使用如下命令

[root@centos 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]>"
[root@centos gnupg-2.1.4]# cat message-original.txt
hello
gpg

三 参考

https://blog.csdn.net/dongtingzhizi/article/details/26362205

猜你喜欢

转载自blog.csdn.net/chengqiuming/article/details/83047967
今日推荐