Android 签名之Signature Version V1 和 V2 探索

记录之前写的一篇总结。

V1:V1是Android7.0之前的签名方式,使用jar Signature方式对APK进行签名打包,jar Signature来自JDK。APK进行签名时会生成一个META-INF文件夹,里面有三个文件:MANIFEST.MFCERT.RSACERT.SF,是用来记录签名信息的。

除了上述三个文件,其他的文件都会对文件内容做一次SHA1算法,就是计算出文件的摘要信息,然后用Base64进行编码。比如AndroidManifest.xml文件,就会对它进行编码生成SHA-1值,把这个SHA-1值用Base64转化网站转化回去,就是MANIFEST.MF文件中记录的条目值。

因此,MANIFEST.MF中存储的是:逐一遍历里面的所有条目,如果是目录就跳过,如果是一个文件,就用SHA1(或者SHA256)消息摘要算法提取出该文件的摘要然后进行BASE64编码后,作为“SHA1-Digest”属性的值写入到MANIFEST.MF文件中的一个块中。该块有一个“Name”属性,其值就是该文件在apk包中的路径。

不再详细累述,CERT.SF文件做了什么工作:

1.计算这个MANIFEST.MF文件的整体SHA1值,再经过BASE64编码后,记录在CERT.SF主属性块(在文件头上)的“SHA1-Digest-Manifest”属性值值下。

2.逐条计算MANIFEST.MF文件中每一个块的SHA1,并经过BASE64编码后,记录在CERT.SF中的同名块中,属性的名字是“SHA1-Digest”。

CER

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值