如何查看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

相关推荐
阿巴斯甜20 小时前
Android 报错:Zip file '/Users/lyy/develop/repoAndroidLapp/l-app-android-ble/app/bu
android
Kapaseker21 小时前
实战 Compose 中的 IntrinsicSize
android·kotlin
xq95271 天前
Andorid Google 登录接入文档
android
黄林晴1 天前
告别 Modifier 地狱,Compose 样式系统要变天了
android·android jetpack
冬奇Lab1 天前
Android触摸事件分发、手势识别与输入优化实战
android·源码阅读
城东米粉儿2 天前
Android MediaPlayer 笔记
android
Jony_2 天前
Android 启动优化方案
android
阿巴斯甜2 天前
Android studio 报错:Cause: error=86, Bad CPU type in executable
android
张小潇2 天前
AOSP15 Input专题InputReader源码分析
android
_小马快跑_2 天前
Kotlin | 协程调度器选择:何时用CoroutineScope配置,何时用launch指定?
android