Android签名方式

1、certutil -hashfile /? 查看相关哈希函数命令。

将android安装包解压(直接解压,不使用apktool等工具),在META-INF文件夹下有MANIFEST.MF文件。其中记录了android打包后各个文件的文件摘要(sha1后再转base64)。
(在window上验证时,certutil可以正确计算出sha1值,但是base64时与MANIFEST.MF中的不符,但是在网络上进行base64却是正确的,可能是window的base64方式有差异)

2、同时使用v1与v2签名

在同时用v1和v2签名时,CERT.SF文件中会包含X-Android-APK-Signed的属性,其值为2,表明了存在v2的签名机制。SHA1-Digest-Manifest的值为MANIFEST.MF文件的SHA1值后转base64。Signature-Version的值为签名的版本,1.0即为v1。CERT.SF剩余的部分同MANIFEST.MF。(网络上指出CERT.SF文件中相应Name指代的文件摘要与MANIFEST.MF中的不同,但也可以互相推导。但是实际中发现,其实是一样的,参考这个https://blog.csdn.net/lostinai/article/details/54694564,其中说明了可能是gradle plugin的版本导致的问题)。

3、通过如下命令查看CERT.RSA的内容。

openssl pkcs7 -inform DER -in “D:\mdm项目\常用apk安装文件\新课堂4.0 5410\iFlyLogin_MDM_self-hasChecked-release2\META-INF\CERT.RSA” -text -noout -print_certs。
其中可以看到签名文件的一些基本信息及公匙。
openssl工具需要单独安装。也可选用jdk中的keytool工具打印,如下:
keytool -printcert -file “D:\mdm项目\常用apk安装文件\新课堂4.0 5410\iFlyLogin_MDM_self-hasChecked-release2\META-INF\CERT.RSA”。

4、打印证书的详细信息

keytool -list -v -keystore D:\workspace\mdm_android\debug.jks
输入口令即密码后会将证书的信息打出,包含指纹等。
其中,证书的指纹的md5,sha1,sha256等值与直接计算debug.jks文件均不相同,还不清楚这几个值的关系。

5、利用keytool手动生成证书

keytool -genkeypair -keystore debug_xxx.jks -alias mdmdebugkey -keyalg RSA -keysize 2048 -validity 30000
随后要求输入一些证书信息,按实际填写即可。这个生成的证书中即包含有公私密匙对。
在命令行直接打印keytool即可显示相关的帮助信息。

6、在安装时系统会读取rsa文件中的公匙,并使用公匙对文件中的加密信息进行解密,得到sf文件的sha1值。如果该值与实际的sf文件sha1值不一致则安装失败。

rsa简介:公匙加密,私匙解密的过程为【加密】。 私匙加密,公匙解密的过程为【签名】

7、v1签名的缺点

1、由于计算了所有文件的sha1值,在安装校验时速度比较慢。

8、在签名时,如果同时勾选v1与v2,则生成的文件与v1签名时一致。不同的地方是在sf文件的开头加入了X-Android-APK-Signed属性,其值为2。其余均与v1相同。

如果仅仅选择v2签名时,则生成的签名文件只有MANIFEST.MF。且里面的内容与v1签名时的不一样。

参考:https://mp.weixin.qq.com/s?__biz=MzI1NjEwMTM4OA==&mid=2651232457&idx=1&sn=90b16c3868a341272b8f1aa26d6c0122&chksm=f1d9e5aac6ae6cbcfaecb07bdd280abf81a46f1937c43f61e69d7f78d64350943356f5443d58&scene=27#wechat_redirect

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值