Android apk签名原理

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的签名验证。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值