keytool命令获取当前APK的SHA1/SHA256签名的原理


1. keytool命令获取APK签名的原理

1.1 APK的签名本质

  • Android APK 本质上是一个 zip 压缩包,里面包含了应用的所有资源和代码。
  • 在 APK 打包时,开发者会用 keystore(私钥)对 APK 进行数字签名。
  • 签名信息会被写入 APK 的 META-INF 目录下(如 META-INF/CERT.RSAMETA-INF/CERT.DSA 等文件)。
  • 这些文件中包含了签名证书(公钥)和签名摘要。

1.2 keytool 的作用

  • keytool 是 Java 自带的密钥和证书管理工具,可以用来查看证书的详细信息,包括 SHA1、SHA256 等指纹。
  • 这些指纹是证书的唯一标识,常用于三方平台(如微信、支付宝、推送等)校验 App 身份。

1.3 获取签名指纹的流程

  1. APK签名时
    • 用 keystore(私钥)对 APK 进行签名,生成证书(公钥)并写入到 APK 的 META-INF 目录下。
  2. 提取证书
    • keytooljarsigner 等工具可以从 APK 的 META-INF/CERT.RSA 文件中提取出证书。
  3. 计算指纹
    • keytool 读取证书内容,对证书的公钥信息做哈希(如 SHA1、SHA256),生成唯一的指纹字符串。

2. 实际命令与用法

2.1 查看 keystore 的 SHA1/SHA256

keytool -list -v -keystore your.keystore
  • 这会显示 keystore 里所有证书的 SHA1、SHA256 指纹。

2.2 查看 APK 的签名证书指纹

keytool -printcert -jarfile your.apk
  • 这会自动从 APK 的 META-INF 目录下找到证书文件,解析并输出 SHA1、SHA256 指纹。

输出示例:

Owner: CN=xxx, OU=xxx, O=xxx, L=xxx, ST=xxx, C=xx
Issuer: CN=xxx, OU=xxx, O=xxx, L=xxx, ST=xxx, C=xx
Serial number: xxxxx
SHA1:  11:22:33:44:55:66:77:88:99:AA:BB:CC:DD:EE:FF:00:11:22:33:44
SHA256: 112233445566778899AABBCCDDEEFF00112233445566778899AABBCCDDEEFF00

3. 原理总结

  • 签名证书是 APK 身份的唯一凭证,SHA1/SHA256 是证书的哈希摘要。
  • keytool 通过读取 APK 内的证书文件,计算其哈希值,输出 SHA1/SHA256 指纹。
  • 三方平台通过比对你注册的 SHA1/SHA256 指纹和 APK 实际签名证书的指纹,来校验 App 身份。

4. 补充说明

  • SHA1/SHA256 指纹不会因包名、代码变化而变化,只与签名证书相关。
  • 更换 keystore(签名证书)会导致 SHA1/SHA256 指纹变化,三方平台校验会失败。
  • debug 和 release 签名的 SHA1/SHA256 不同,注意区分。

如需更详细的命令用法、证书结构解析、或遇到签名校验失败的排查方法,欢迎继续提问!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

你一身傲骨怎能输

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值