Android apk签名原理

来源:互联网 发布:js数组的length方法 编辑:程序博客网 时间:2024/06/07 17:34

Android apk的签名涉及到数字签名这样的一个技术,简单解释下数字签名。
我们知道非对称加密算法中设计到公钥和私钥,公钥可以分发出去,私钥是不可以分发出去的。公钥加密,私钥可以解密,私钥加密,公钥可以解密。
数字签名就是利用这个,使用私钥加密,如果用公钥可以解密成功,那么说明加密的人拥有私钥,这样就相当于做了身份验证了。

先说下Android apk的签名过程。在Android apk签名过程中涉及到三个文件,MANIFEST.MF CERT.SF CERT.RSA。

MANIFEST.MF:
首先会对apk中的每一个文件(包括dex,资源文件等)做个摘要,分别存在MANIFEST.MF 文件中。

CERT.SF:
其次会使用rsa算法对MANIFEST.MF做数字签名,即用私钥进行加密,生成CERT.SF,同时CERT.SF文件中也存储了各个文件的摘要

CERT.RSA:
最后,此文件中会存储公钥,以及加密算法信息,供系统验证时来使用。

最后,说下验证过程:

系统从CERT.RSA文件中拿出公钥,对CERT.SF中的数字签名进行验证解密,之后会计算apk中各文件的摘要,同时和CERT.SF文件中的摘要进行对比,看是否有人修改了apk,这样就完成了apk的签名验证。

原创粉丝点击