Android 签名过的APK文件解压缩后会生成META-INF目录
V1签名方案
该目录下会生成至少三个文件分别为MANIFEST.MF、CERT.SF、CERT.SF,用不同的证书和签名方式得到的名字可能不同,以及对于多个证书的情况,就会对应有多个.MF,.SF,CERT.RSA文件
1.MANIFEST.MF
![[MANIFEST.MF] [MANIFEST.MF]](/2018/01/12/META-INF目录/1.jpg)
apk当中的所有原始文件信息用摘要算法如SHA1计算得到摘要信息并用base64编码保存
Name:对应文件在apk中的路径
SHA1-Digest:对应相应文件摘要信息的base64编码值,摘要算法采用SHA1
2.CERT.SF
![[CERT.SF] [CERT.SF]](/2018/01/12/META-INF目录/2.jpg)
.MF文件的摘要信息&.MF文件当中每个条目再用摘要算法计算得到的摘要信息并用Base64编码保存
第3行:SHA1-Digest-Manifest 取MANIFEST.MF文件的摘要信息
第5行开始就是遍历.MF文件中的条目,分别计算摘要信息然后Base64编码
注:自己在打包自己的apk测试中发现MANIFEST.MF和CERT.SF文件中除了前几行的内容不一样外,其它部分都是一样的,这一点看起来跟前面的描述有冲突,困惑了很久,麻烦有知道原因的告知,多谢!
3.CERT.RSA
![[CERT.RSA] [CERT.RSA]](/2018/01/12/META-INF目录/3.jpg)
无法直接查看,可通过以下命令
openssl pkcs7 -inform DER -in CERT.RSA -noout -print_certs -text
得到以下输出:
![[CERT] [CERT]](/2018/01/12/META-INF目录/4.jpg)
存放证书信息,公钥信息,以及用私钥对.SF文件的数据进行加密得到的签名信息,这段数据是无法伪造的,除非有私钥,另外.RSA文件还记录了所用的签名算法等信息。
V2签名方案
该目录下只会生成MANIFEST.MF文件