Apk打包-签名过程

参考:http://blog.csdn.net/jiangwei0910410003/article/details/50402000

参考:http://blog.csdn.net/kickxxx/article/details/18252881

 概念:

数据摘要:对一个数据源进行一个算法之后得到一个摘要,也叫作数据指纹,不同的数据源,数据指纹肯定不一样。

著名的摘要算法有RSA公司的MD5算法和SHA-1算法及其大量的变体。

数据签名:非对称密钥加密技术 + 数字摘要技术 的结合。

如果消息的发送者有一天想给消息接收者发消息,在发送的信息中,除了要包含原始的消息外,还要加上另外一段消息。这段消息通过如下两步生成:

1)对要发送的原始消息提取消息摘要;

2)对提取的信息摘要用自己的私钥加密。

通过这两步得出的消息,就是所谓的原始信息的数字签名。

 数字证书 - Certificate

数字证书是一个经证书授权 中心数字签名的包含公开密钥拥有者信息以及公开密钥的文件。CERT.RSA包含了一个数字签名以及一个数字证书。

需要注意的是Android APK中的CERT.RSA证书是自签名的,并不需要这个证书是第三方权威机构发布或者认证的,用户可以在本地机器自行生成这个自签名证书。

过程

1.生成MAINFEST.MF文件

遍历文件内容做一次SHA1算法,就是计算出文件的摘要信息,然后用Base64进行编码

2.生成CERT.SF文件(内容类似MAINFEST.MF)

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

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

3.生成CERT.RSA文件

用私钥计算出签名, 然后将签名以及包含公钥信息的数字证书一同写入  CERT.RSA  中保存。CERT.RSA是一个满足PKCS7格式的文件。

原文地址:https://www.cnblogs.com/wjw334/p/7657394.html