签名与验证

app签名作用:

保证app安装包是来自其私钥的拥有者并未被覆盖。也表明app的拥有者.

所有app的签名是唯一的,如app签名重复,则安装时会报错,一定需要卸载签名相同的原安装程序才能装新的。

 

 

签名操作原理

1,遍历app安装包,对每个文件先SHA1编码再BASE64编码,生产文件的一次摘要,并把每个文件的所有一次摘要保存至MANIFEST.MF文件中。把MANIFEST.MF存于安装包的meta-inf文件夹内。

2,对MANIFEST.MF的文件内容先SHA1编码再BASE64编码,生成总摘要,保存至CERT.SF文件中,遍历MANIFEST.MF中的所有文件的一次摘要,再次先SHA1编码再BASE64编码,生成文件的二次摘要。并把所有的文件的二次摘要保存至CERT.SF文件中,把CERT.SF存于安装包的meta-inf文件夹内。

3,对CERT.SF的提取出摘要(这部份还没弄明白),用私钥加密形成签名,把这个签名,公钥,加密算法和信息发布机构信息等保存至CERT.RSA文件内,把CERT.RSA存于安装包的meta-inf文件夹内。

 

 

签名后的appSigned.apk多了以下三个文件 MANIFEST.MF, CERT.RSA, CERT.SF。

MANIFEST.MF 保存了所有文件的SHA-1并base64,即app.apk的消息摘要

CERT.SF 保存了对MANIFEST.MF的文件SHA-1并base64(摘要值)。以及MANIFEST.MF中每一个摘要项的SHA-1并base64(摘要值)

CERT.RSA 包含公钥信息,所采用的加密算法和信息发布机构信息

 

 


签名认证原理

1,  从appSigned.apk内获取签名证书(含公钥),签名,以及消息摘要算法。

2,  用公钥解密签名,得到摘要。 从CERT.SF文件中的内容(此部分没弄清楚)对其SHA1生成摘要,两个摘要相比,可证明CERT.SF文件未被篡改。

3,对MANIFEST.MF的文件内容先SHA1编码再BASE64编码,生成总摘要,和CERT.SF中的总摘要比较,遍历MANIFEST.MF中的文件的一次摘要,先SHA1编码再BASE64编码,生成文件的二次摘要,并和CERT.SF中相应的文件二次摘要比较,如果相同则证明是MANIFEST未被篡改。

4,对安装包内的每个文件先SHA1编码再BASE64编码,生产文件的一次摘要,并和MANIFEST.MF中的相应的文件一次摘要比较,如相同则证明是安装包内的文件未被篡改。

 

如一致则认证通过。由于只有发送者才有加密摘要的私钥,所以我们可以确定信息一定是发送者发送的

 

 

签名原理http://blog.csdn.net/kickxxx/article/details/18252881

证书格式http://liuleijsjx.iteye.com/blog/433853

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值