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

相关推荐
曾经的三心草1 小时前
Mysql之约束与事件
android·数据库·mysql·事件·约束
guoruijun_2012_45 小时前
fastadmin多个表crud连表操作步骤
android·java·开发语言
Winston Wood5 小时前
一文了解Android中的AudioFlinger
android·音频
B.-7 小时前
Flutter 应用在真机上调试的流程
android·flutter·ios·xcode·android-studio
有趣的杰克7 小时前
Flutter【04】高性能表单架构设计
android·flutter·dart
大耳猫12 小时前
主动测量View的宽高
android·ui
帅次15 小时前
Android CoordinatorLayout:打造高效交互界面的利器
android·gradle·android studio·rxjava·android jetpack·androidx·appcompat
枯骨成佛16 小时前
Android中Crash Debug技巧
android
kim565921 小时前
android studio 更改gradle版本方法(备忘)
android·ide·gradle·android studio
咸芝麻鱼21 小时前
Android Studio | 最新版本配置要求高,JDK运行环境不适配,导致无法启动App
android·ide·android studio