赞
踩
因为近期刚针对各应用平台对APP备案时间节点要求进行了统一整理,然后隔天就被要求提供一下app相关的的公钥和MD5,虽然很快就解决了这个事情,但忍不住又稍微衍生了一下,但行小步,莫问远方吧
关联Blog
Tip:如果着急获取公钥和MD5
可以直接用便捷工具,反之有兴趣的话可以看看其他获取公钥和MD5
的方式
需要注意的是,MD5 目前不再被认为是安全的加密算法,因为它容易受到碰撞攻击(多个不同的输入产生相同的摘要)。在安全性要求较高的情况下,应考虑使用更强大的哈希算法,例如 SHA-256 或 SHA-3。
检测是否存在任何篡改
。确保文件未被损坏或篡改
。近期基本所有国内Android应用平台因为工信部的要求都需要进行APP备案
,在APP备案中需要提供公钥、MD5
,所以很多工具app应运而生,这种工具我并不确定是否以后还一直可以使用,故除此之外我还提供了另一种核心方式,万变不离其中~
APP备案助手
因为我是使用Demo做演练,所以我需要先 生成 keystore、jks 签名证书,然后在 反编译keystore、jks签名证书 获取部分信息
#生成jsk格式的签名证书
keytool -genkeypair -v -keystore testkeyly.jks -keyalg RSA -keysize 2048 -validity 10000 -alias testkeyly -storetype JKS
通过 keytool
工具获取签名证书
#示例 your_alias、your_keystore 分别输入自己的签名信息 & certificate 证书名称(可自行更改)
keytool -export -alias your_alias -file certificate.cer -keystore your_keystore.keystore
# demo 示例
keytool -export -alias tmpkey -file certificate.cer -keystore tmpkey.jks
cmd操作结果
生成cer格式文件
直接在详细信息获取公钥即可
如果当前本地JDK环境用的1.8的话,可以直接采用如下方式,逆向获取证书信息节课,如没有MD5则查看后续的异常处理方式
# 示例 xxx 输入自己的签名文件名即可
keytool.exe -list -v -keystore xxx.keystore或xxx.jks
#demo 示例
keytool -list -v -keystore tmpkey.jks
正常的话签名信息中可以看到MD5,如下
看到这里可能你也遇到不正常的场景了…
例如签名信息中根本不包含MD5信息… 而且密钥库类型也不同…
查了一下资料,发现可能高于JDK1.8的环境 移除了 这些
Disable MD5 or MD2 signed jars
,导致均无法通过keyTool
获取到MD5
信息
当前环境
11.0.18
了1.8
执行方式 + 默认配置(并未设置签名信息,故该处标红区域的MD5值不对
)
效果如图
在build.gradle
中声明对应的签名信息,然后重新执行该操作(可参考:debug模式下打出release签名包)
早以前我就记录过 Jadx快速实现Apk反编译 ,这里就不再赘述了,图就直接套了…
APK signature
RAS本身是一种加密方式,这里的RSA文件就是加密文件
将 apk
后缀改为 zip
,变为可压缩包
解压后进入 META-INF
.RSA后缀文件
(如果没有该文件,那么这个apk签名可能存在问题)4.使用 keytool
命令获取MD5签名(有的可能获取不到,例如金融型app会进行特殊的二次加密)
#xxx 替换成对应的rsa文件名即可
keytool -printcert -file xxx.RSA
赞
踩
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。