当前位置: 移动技术网 > IT编程>移动开发>Android > Android签名机制

Android签名机制

2019年12月15日  | 移动技术网IT编程  | 我要评论

黑豚鼠价格,谭凯文,九死一生9413恐怖空间

装载请标明出处,维权必究:https://www.cnblogs.com/tangzh/p/12040927.html

首先我们在as中双击apk,出现apk的分析界面,然后选中保存签名相关文件的文件夹:

 

一:签名文件:

1、manifest.mf:保存了所有其他文件的sha-1并base64编码后的值

2、cert.sf

sha1-digest-manifest的值,这个值就是manifest.mf文件的sha-1并base64编码后的值。

后面几项的值是对manifest.mf文件中的每项再次sha1并base64编码后的值。

将上一个文件的某一项取出,比如:

name: assets/bookcategoryconfig

sha1-digest: u5yluiucukhrho/xaqnzbncb6cu=

加两个\r\n,保存文件,再sha1并base64编码便可得到。

3、cert.rsa:

包含了公钥信息和发布机构信息。它把之前生成的 cert.sf文件, 用私钥计算出签名, 然后将签名以及包含公钥信息的数字证书一同写入 cert.rsa 中保存。cert.rsa是一个满足pkcs7格式的文件。

 

name”属性,其值就是该文件在apk包中的路径。

 

二、签名过程

cert.rsa文件生成:

它会把前面生成的 cert.sf文件用私钥计算出签名, 然后将签名以及包含公钥信息的数字证书一同写入 cert.rsa 中保存。cert.rsa是一个满足pkcs7格式的文件。

 

三、apk安装校验过程

1、通过在cert.rsa文件中记录的签名信息,验证了cert.sf没有被篡改过

   rsa是一种非对称加密算法。用私钥通过rsa算法对摘要信息进行加密。在安装时只能使用公钥才能解密它。解密之后,将它与未加密的摘要信息进行对比,如果相符,则表明内容没有被异常修改。

2、通过cert.sf文件中记录的摘要值,验证了manifest.mf没有被修改过

3、apk内文件的摘要值要与manifest.mf文件中记录的一致

这里简单介绍下sha1数字签名。简单地说,它就是一种安全哈希算法,类似于md5算法。它把任意长度的输入,通过散列算法变成固定长度的输出(这里我们称作“摘要信息”)。你不能仅通过这个摘要信息复原原来的信息。另外,它保证不同信息的摘要信息彼此不同。因此,如果你改变了apk包中的文件,那么在apk安装校验时,改变后的文件摘要信息与manifest.mf的检验信息不同,于是程序就不能成功安装。

 

1、 android签名机制其实是对apk包完整性和发布机构唯一性的一种校验机制。

2、 android签名机制不能阻止apk包被修改,但修改后的再签名无法与原先的签名保持一致。(拥有私钥的情况除外)。

3、 apk包加密的公钥就打包在apk包内,且不同的私钥对应不同的公钥。换句话言之,不同的私钥签名的apk公钥也必不相同。所以我们可以根据公钥的对比,来判断私钥是否一致。

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网