5. 对发送的信息签名

前面Bob使用Alice的公钥对code.php进行了加密,并发送给了Alice,实际上,从Alice的角度来讲还是有风险的,因为Alice在收到code.php.gpg后,虽然可以使用自己的私钥解密,但她并不能确定这个文件一定是Bob发送给他的。Alice如何确定这个文件是Bob发送的呢?这就需要Bob多做一件事:对要发送的code.php进行数字签名,然后Alice用Bob的公钥对其进行确认。

  1. 将加密文件和签名信息放在一个文件中

    图 6.5. 将加密文件和签名放在一个文件中

    将加密文件和签名放在一个文件中

    gpg -u bob@docboon.io -r alice@docboon.io -s -e code.php

    这个命令将会生成code.php.gpg文件,这个文件中已经包含了Bob的签名信息。当Alice收到这个文件后使用

    gpg -d code.php.gpg

    会清晰的看到原文件和Bob的签名信息,前提是Alice一定要有Bob的公钥。

  2. 将源文件和签名信息分离

    gpg -b code.php

    这个命令将会生成code.php.sig文件,这个文件中已经包含了Bob的签名信息。当Alice收到code.phpcode.php.sig文件后使用

    gpg --verify code.php.sig

    来验证发送者的身份。

    gpg -a -b code.php

    这个命令将会生成code.php.asc文件,这个文件中已经包含了Bob的签名信息。当Alice收到code.phpcode.php.sig文件后使用

    gpg --verify code.php.asc

    来验证发送者的身份。