如何查看APK的MD5签名及无法显示MD5签名的解决办法

https://blog.asroads.com/post/3358e0c4.html

之前的文章内已经介绍了不少的关于Android环境下出Apk 包遇到的各种填坑操作,以及一些设置小技巧,但坑是未知的,今天又踩一个坑,这次的问题是和电脑环境有关的。于是下面记录一下。

如何查看APK的MD5签名

正常来讲我们都知道,想查看APK 的MD5签名,一般是两种办法,一种是直接对我们的Android签名文件keystore操作,另外一种是对我们已经构建成功的Release包操作。

利用项目的 keystore (jks)文件

bash 复制代码
keytool -list -v -keystore  xxx.keystore

或者 (后缀不同而已)

bash 复制代码
keytool -v -list -keystore xxx.jks

正常来讲 我们期待的结果是:

从输出的内容看到:MD5: XXXXXXX 就是我们要的签名内容。

通过CERT.RSA文件查询MD5签名

解压构建的Apk得到RSA文件

APK以zip文件方式打开,在\META-INF\目录中存在一个.RSA后缀的文件,一般名为CERT.RSA。

使用keytool命令获取MD5签名

bash 复制代码
keytool -printcert -file CERT.RSA

还有一种 直接使用android studio查看

意外情况无法显示MD5

MD5不显示

无论是上面哪一种情况都是这样:只有SHA1和SHA256,看不到有MD5,此时我一度怀疑是不少我的签名文件生成的有问题。后面才知道原来和环境有关,后面让同事在他电脑上用同样的命令就显示成功了!

解决办法:网上先去搜索了是不是MD5 在高版本下,就被废弃什么的,无果,后面就搜了遇到的问题,还真有前人遇到和解决了,下面的评论也讨论了原因。文章链接:
jdk10.0.1使用keytool -v -list -keystore xxx.jks拿不到Md5值

摘抄评论:

查询知识

后面找从事Android相关的朋友帮忙询问得知原来:高版本java 移除了 这些 Disable MD5 or MD2 signed jars

https://www.java.com/en/jre-jdk-cryptoroadmap.html

好吧,于是输出了一下我的本地java环境:

bash 复制代码
smile@bogon ~ %  java -version
java version "15.0.1" 2020-10-20
Java(TM) SE Runtime Environment (build 15.0.1+9-18)
Java HotSpot(TM) 64-Bit Server VM (build 15.0.1+9-18, mixed mode, sharing)
smile@bogon ~ %

至此,一切真相终于浮出水面,扑所迷离的问题,终于弄明白啦。本文完毕了。

2021年8月4日更新

后面经过寻找终于找到了一个 可以查看 MD5的神器,jadx

运行使用jadx-gui

bash 复制代码
jadx-gui /Users/smile/Downloads/test.apk

以上,就是如何查看 APK的 MD5签名。

拓展

.jks 和 .keystore 的区别

二者都是用来打包的,并保证应用的唯一性!

最大的区别在于:

keystore 是 Eclipse 打包生成的签名。

jks 是 Android studio 生成的签名!

备注:很多第三方市场,上传 apk 时,只支持 keystore(目前我没遇到过),需要把 .jks 签名转化为 .keystore

标准 keystore (standard jdk keystore types)

包括 JCEKS,JKS,PKCS12 这几种格式。

区别:

jceks : 存储对称密钥(分组密钥、私密密钥)

jks : 只能存储非对称密钥对(私钥 + x509公钥证书)

pkcs12 : 通用格式(rsa公司标准)。微软和java 都支持。

转载自

https://blog.asroads.com/post/3358e0c4.html

相关推荐
STCNXPARM8 小时前
Linux camera之V4L2子系统详解
android·linux·camera·v4l2架构
2501_944525548 小时前
Flutter for OpenHarmony 个人理财管理App实战 - 账户详情页面
android·java·开发语言·前端·javascript·flutter
不急不躁12312 小时前
Android16 GTS GtsPermissionTestcases 测试,跳过权限检查
android
符哥200813 小时前
关于用Android Compose开发成不成熟的分析
android·android jetpack
蜗牛、Z13 小时前
Android 蓝牙/Wi-Fi通信协议之:蓝牙扫描ScanCallback详解
android
黄昏晓x13 小时前
Linux----进程控制
android·linux·运维
我是阿亮啊14 小时前
android中事件分发机制
android·事件分发·事件分发机制
心前阳光15 小时前
Unity 模拟父子关系
android·unity·游戏引擎
2501_9151063215 小时前
当 Perfdog 开始收费之后,我重新整理了一替代方案
android·ios·小程序·https·uni-app·iphone·webview
多多*15 小时前
2月3日面试题整理 字节跳动后端开发相关
android·java·开发语言·网络·jvm·adb·c#