You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为Release版本生成MD5密钥哈希?结果有效性及stdin含义咨询

解决MD5哈希获取及相关疑问

1. 为什么keytool和gradle signingReport默认不输出MD5?

从JDK 11开始,keytool默认不再输出MD5摘要(因MD5安全性较弱),Gradle的signingReport任务也继承了JDK的这个行为,所以默认只显示SHA1、SHA256这类更安全的哈希值。

让keytool输出MD5的方法

直接在原命令后添加-digestalg MD5参数即可:

keytool -list -v -keystore ~/.android/debug.keystore -alias androiddebugkey -storepass android -keypass android -digestalg MD5

执行后就能看到MD5哈希值。

让gradle signingReport输出MD5的方法

在app模块的build.gradle(或build.gradle.kts)中添加配置,强制输出所有摘要类型:

android {
    tasks.withType(com.android.build.gradle.tasks.SigningReport) {
        signingReportOutputType = com.android.build.gradle.internal.tasks.SigningReportTask.OutputType.ALL
    }
}

之后再执行./gradlew signingReport,就能看到MD5、SHA1、SHA256等所有哈希值。

2. openssl命令得到的MD5是否正确?

你使用的命令:

keytool -exportcert -alias myaliasofkeystore -keystore mykeystorefolder/release-keystore | openssl md5

是正确的。这个命令逻辑是先用keytool -exportcert导出证书二进制内容,再通过管道(|)将内容传给openssl md5计算哈希。输出的无冒号字符串就是证书的MD5值,只是默认格式没有分隔符。

如果需要带冒号的标准格式,可用sed命令处理:

keytool -exportcert -alias myaliasofkeystore -keystore mykeystorefolder/release-keystore | openssl md5 | sed 's/\(..\)/\1:/g; s/:$//'

3. 输出中的“stdin”是什么意思?

stdin是**标准输入(Standard Input)**的缩写。因为你用了管道|,前面keytool的输出会作为openssl md5的输入来源,而非从文件读取数据。openssl提示正在从标准输入读取内容计算MD5,这是正常提示,不影响结果正确性。

内容的提问来源于stack exchange,提问作者user21300258

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.29 13:33:15