Android应用无法获取11位长度hash字符串的操作求助
Android SMS Retriever 11位应用哈希生成完整操作指南
前置准备
你需要提前准备2个信息:
- 应用的正式/测试签名文件(.jks/.keystore格式,debug签名默认路径为
~/.android/debug.keystore,默认密码为android) - 应用的完整包名(和AndroidManifest.xml中声明的完全一致)
步骤1:获取签名的SHA256十六进制串
- 配置好JDK环境变量后,打开终端(Windows可打开命令提示符或PowerShell)
- 执行签名查看命令:
keytool -list -v -keystore 你的签名文件路径 -alias 签名别名 - 输入签名密码后,在输出结果中找到
SHA256对应的行,将该行中所有冒号删除,所有字符转为小写,得到的连续字符串就是需要的hex string。
示例:原SHA256值为A1:B2:C3:D4...,处理后为a1b2c3d4...
步骤2:拼接待加密字符串
按照[包名] + 单个空格 + [步骤1得到的hex string]的规则拼接完整字符串,不要多空格或少空格。
示例:包名为com.example.demo,拼接后完整字符串为com.example.demo a1b2c3d4...
步骤3:计算11位哈希值
Linux/Mac 终端操作
直接执行以下命令,将占位符替换为你步骤2得到的拼接字符串即可:echo -n "你的拼接字符串" | sha256sum | xxd -r -p | base64 | cut -c1-11
注意必须加-n参数去掉echo默认的末尾换行,这是绝大多数人执行官方命令得到错误哈希的核心原因
Windows 系统操作
Windows没有内置对应命令工具,推荐两种方案:
- 安装Git Bash工具,打开Git Bash终端执行上述Linux/Mac相同命令
- 手动计算:先对拼接字符串做SHA256哈希计算,将得到的二进制结果转Base64编码,截取前11位字符即为最终哈希
常见问题排查
- 测试和正式环境签名分开计算,两个签名生成的哈希完全不同
- 包名大小写必须和实际配置完全一致
- 拼接时包名和hex串之间只能有一个空格,不要加其他字符
内容的提问来源于stack exchange,提问作者Hemendra Khatik
相关产品推荐
相关产品推荐

