You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

启用Google应用签名后,Sms Retriever的11位哈希码失效求助

解决Google Play应用签名后SMS Retriever哈希密钥失效的问题

我完全懂你遇到的坑——启用Google应用签名后,之前用自己keystore生成的哈希直接失效了,毕竟Google会替换成它的官方签名密钥来签发给用户的最终APK。下面是具体的解决步骤,根本不需要合并keystore,直接用Google提供的应用签名证书生成正确的哈希就行:

步骤1:从Google Play控制台获取应用签名证书

  1. 打开Google Play控制台,找到你的目标应用
  2. 进入发布 > 设置 > 应用签名页面
  3. 在「应用签名证书」区域,点击下载DER格式的证书文件(PEM格式也可以,后续步骤兼容两种)

步骤2:生成SMS Retriever所需的哈希密钥

这里给你两种简单的实现方法,选顺手的来就行:

方法一:用OpenSSL命令行(推荐)

如果你的电脑装了OpenSSL,直接执行以下命令:

  1. (如果下载的是DER证书)先转成PEM格式:
    openssl x509 -inform der -in downloaded_certificate.der -out certificate.pem
    
  2. 提取证书里的公钥:
    openssl x509 -pubkey -noout -in certificate.pem > public_key.pem
    
  3. 计算SHA-256哈希并转Base64编码:
    openssl dgst -sha256 -binary public_key.pem | openssl base64
    
  4. 取输出结果的前11个字符,这就是你要的哈希密钥。比如输出是abcdefghijklmnop,取前11位abcdefghijk

方法二:用Keytool结合在线工具

不想折腾OpenSSL的话,可以这么操作:

  1. 用keytool打印证书的SHA256指纹:
    keytool -printcert -file downloaded_certificate.der
    
  2. 在输出里找到SHA256:开头的行,复制后面的十六进制字符串(把所有冒号删掉,比如AA:BB:CC改成AABBCC
  3. 把这个十六进制字符串转成Base64编码(随便找个靠谱的在线十六进制转Base64工具就行)
  4. 同样取Base64结果的前11个字符,就是目标哈希

步骤3:验证和测试

  • 一定要确保短信模板包含这个哈希,格式必须是:Your OTP is 123456. {哈希密钥}(注意哈希前面有空格,大括号不能省略)
  • 测试别用本地签名的APK,建议从Google Play控制台的内部测试轨道下载签名后的APK安装,这样才能匹配Google的签名哈希

常见误区提醒

  • 完全没必要把Google的证书添加到你自己的keystore里,纯属多此一举,直接用下载的证书生成哈希就够了
  • 别搞混上传密钥和应用签名密钥:上传密钥是你用来签APK上传到Play的,应用签名密钥才是Google用来签用户最终安装包的,后者才是生成哈希的核心依据

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

火山引擎 最新活动