网上一些下载资源会同时提供下载资源名称加".sig"为文件名的分离签名文件,用来校验下载资源的完整性。
开源代码的数字签名如何使用,如:glibc源码
下载是包含两个文件:
1. tar.gz -- 源码包
2. .sig -- 数字签名
如何使用这个sig文件呢?
以grub为例,当前最新版本的grub为2.00版本,可从 ftp://ftp.gnu.org/gnu/grub/ 下载,有两个文件:grub-2.00.tar.gz.sig和grub-2.00.tar.gz。
验证方法:
$ gpg --verify grub-2.00.tar.gz.sig grub-2.00.tar.gz
gpg: 于 2012年06月28日 星期四 08时11分54秒 CST 创建的签名,使用 DSA,钥匙号 E82E4209
gpg: 无法检查签名:找不到公钥
这说明找不到对应的公钥,同时会提示当前验证的钥匙号为 E82E4209,根据这个钥匙号导入公钥:
$ gpg --recv-keys E82E4209
gpg: 下载密钥‘E82E4209’,从 hkp 服务器 keys.gnupg.net
gpg: 密钥 E82E4209:公钥“Vladimir 'phcoder' Serbinenko <phcoder@gmail.com>”已导入
gpg: 没有找到任何绝对信任的密钥
gpg: 合计被处理的数量:1
gpg: 已导入:1
$ gpg --verify --verbose grub-2.00.tar.gz.sig grub-2.00.tar.gz
gpg: 于 2012年06月28日 星期四 08时11分54秒 CST 创建的签名,使用 DSA,钥匙号 E82E4209
gpg: 使用 PGP 信任模型
gpg: 完好的签名,来自于“Vladimir 'phcoder' Serbinenko <phcoder@gmail.com>”
gpg: 警告:这把密钥未经受信任的签名认证!
gpg: 没有证据表明这个签名属于它所声称的持有者。
主钥指纹: E53D 497F 3FA4 2AD8 C9B4 D1E8 35A9 3B74 E82E 4209
gpg: 二进制 签名,散列算法 SHA512
参考:http://bbs.chinaunix.net/thread-1882309-1-1.html http://www.cnblogs.com/daemon369/p/3204020.html