Android签名机制
2018-04-19 本文已影响128人
erki_stwee
文章摘要
Android签名机制流程图.PNG为何需要Android签名
防止APK被恶意篡改后,二次签名打包。
基本概念
1.数据摘要:本质上是一种算法;原始信息按照一定算法规则提取信息,提取出来的信息就是数据摘要。
特点:
- 固定长度
- 相同的输入必定产生相同的输出
- 不可逆性
2.签名文件和证书文件:必定成对出现;
数字签名:非对称加密技术和数据摘要的一个应用,可以解决可靠通信的问题。
数字证书:主要用来解决公钥安全发放的问题。
什么是可靠通信问题?
1.确定消息来源是发送者。
2.传递过程中不能被第三方篡改,即使篡改了,也可以发觉。
3.jarsign和signapk
jarsign:是jdk自带的工具。我们平时打包基本上都是采用jarsign。
signapk:专门对apk文件进行签名,可以减少apk体积。相对于jarsign更加安全。在Android6.0以及更低的版本上安装需要做一定的处理。
Android的APK两种签名
4.keystore文件和pk8、x509.pem文件
jarsign:签名使用的是keystore文件。
signapk:签名使用的是pk8和x509.pem文件。
keystore和pk8,x509.pem文件可以互相转换。
Android创建自己的pk8和x509.pem文件并给app签名
5.如何手动签名apk
signapk签名需要手动下载工具,然后执行相应的命名
Android签名流程(简述)
通过解压apk文件,存在一个META-INF目录。这里面包括(MANIFEST.MF,CERT.SF,CERT.RSA) META-INFO.PNGMANIFEST.MF:apk文件中所有文件的数据摘要内容。
CERT.SF:每个块内容的数据摘要信息。
CERT.RSA:保存签名以及公钥公钥信息的数字证书。