apk签名原理

apk的签名信息在apk解压后的META-INF目录下。这三个文件分别是MANIFEST.MF,CERT.SF,CERT.RSA。下面会说明这三个文件的作用以及生成方式。MANIFEST.MFMANIFEST.MF会将整个apk中所有的文件进行SHA1-BASE64编码,生成的摘要信息就是SHA1-Digest。下面的就是MANIFEST.MF中记录AndroidManifest.xml的摘要...
摘要由CSDN通过智能技术生成

apk的签名信息在apk解压后的META-INF目录下。这三个文件分别是MANIFEST.MF,CERT.SF,CERT.RSA。下面会说明这三个文件的作用以及生成方式。

MANIFEST.MF

MANIFEST.MF会将整个apk中所有的文件进行SHA1-BASE64编码,生成的摘要信息就是SHA1-Digest。下面的就是MANIFEST.MF中记录AndroidManifest.xml的摘要信息。

	Name: AndroidManifest.xml
	SHA1-Digest: 7AWE28hOihCw2ecRxVkh0LRpQw0=

关于计算文件SHA1可以使用linux的sha1sum工具,直接输出文件sha1。值得注意的是,比如生成的SHA1是以字符串形式输出在屏幕上的,在计算base64时,不能直接将字符串计算base64,而应该将SHA1两位一组,将其十六进制对应的UTF8的字符进行base64!

比如说,AndroidManifest.xml的SHA1为ec0584dbc84e8a10b0d9e711c55921d0b469430d。我们需要将ec0584dbc84e8a10b0d9e711c55921d0b469430d按照(ec)(05)(84)(db)…(0d)组合起来,每一组看做一个十六进制数,然后将这个十六进制数转成utf8对应的字符。最后将这个字符串计算base64输出,输出的结果就是SHA1-Digest的值。

在这里用python写了一个小的测试工具,仅供参考:

	#!/usr/bin/python
	# -*- coding: utf-8 -*-

	import base64


	def test(hexstr):
	    hexarray = []
	    for i in range(0, len(hexstr), 2):
	        hex = hexstr[i] + hexstr[i + 
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值