Mac 命令行获取 APK 公钥和证书 MD5 指纹

Mac 命令行获取 APK 公钥和证书 MD5 指纹

一、环境信息

  • 系统:macOS
  • APK:test.apk
  • Android SDK Build Tools:36.0.0

APK 路径:

bash 复制代码
/Users/mac/Downloads/test.apk

二、获取 APK 证书 MD5 指纹

使用 Android SDK 自带的 apksigner:

bash 复制代码
/Users/mac/Library/Android/sdk/build-tools/36.0.0/apksigner \
  verify --print-certs \
  /Users/mac/Downloads/test.apk

输出示例:

text 复制代码
Signer #1 certificate DN: CN=test, OU=test, O=test, L=quanzhou, ST=fujian

Signer #1 certificate SHA-256 digest: 9e9344f077c41eb447edcc791af5d461e80d0a50b1371aee62439a96dce666e9

Signer #1 certificate SHA-1 digest: 2630e2f2c5df5e5f7f968c3028a0c15ff390a9a1

Signer #1 certificate MD5 digest: ed8e0251d793c3149d6e2b8b90c0fbf3

其中,MD5 证书指纹为:

text 复制代码
ed8e0251d793c3149d6e2b8b90c0fbf3

注意: 现代 APK 可能使用 v2/v3 等签名方案,证书不一定存在于 META-INF/*.RSA 中,因此推荐使用 apksigner。

三、获取 APK 签名公钥

1. 安装 Python 依赖

bash 复制代码
python3 -m pip install androguard

2. 创建 Python 脚本

创建 get_apk_public_key.py:

python 复制代码
from androguard.core.apk import APK

apk_path = "/Users/mac/Downloads/test.apk"
apk = APK(apk_path)

certs = apk.get_certificates()

if not certs:
    raise SystemExit("未找到 APK 签名证书")

for i, cert in enumerate(certs, 1):
    print(f"\nSigner #{i}")

    pub = cert.public_key
    print("公钥算法:", pub.algorithm)

    if pub.algorithm == "rsa":
        rsa_key = pub["public_key"].parsed
        modulus = rsa_key["modulus"].native
        exponent = rsa_key["public_exponent"].native

        print("公钥模数(Modulus):")
        print(format(modulus, "X"))

        print("公钥指数(Exponent):")
        print(format(exponent, "X"))
    else:
        print("非 RSA 公钥,请根据实际算法处理")

3. 执行脚本

bash 复制代码
python3 get_apk_public_key.py

输出中的 Modulus 为 RSA 公钥模数,Exponent 为公钥指数。

注意:不同版本的 Androguard API 可能存在差异;如脚本报错,需要根据安装版本调整。

四、阿里云备案注意事项

阿里云 App 备案需要根据页面要求填写 APK 签名相关信息。

  • MD5 指纹 :使用 apksigner 输出的 certificate MD5 digest。
  • 公钥:先确认备案字段要求的是公钥完整内容还是 RSA 公钥模数(Modulus),再填写对应值。
  • 包名 :可通过 Android SDK 的 aapt 工具查询。

查询包名:

bash 复制代码
/Users/mac/Library/Android/sdk/build-tools/36.0.0/aapt \
  dump badging \
  /Users/mac/Downloads/test.apk \
  | grep "^package:"

官方文档:阿里云 App 备案指南

五、总结

需求 工具
获取证书 MD5、SHA-1、SHA-256 apksigner
提取 APK 签名证书中的公钥 Python + Androguard
获取 RSA 公钥模数 Androguard
获取 APK 包名 aapt dump badging

推荐先用 apksigner 获取证书指纹,再根据备案系统的具体字段要求提取公钥信息。

相关推荐
lpfasd1234 小时前
Ollama 还是 LM Studio:在 24GB 的 M6 Mac 上,我把 Ollama 卸载了
macos·策略模式
情 九4 小时前
MCP 开发环境搭建:Mac 与 Windows 跑通 Python 服务和 stdio 客户端
windows·python·macos·mcp
摘星编程5 小时前
Mac玩游戏选什么模拟器?MuMu Mac版体验:金铲铲165帧、明日方舟时停键,操作录制也上线了
macos·玩游戏·远程软件
DARLING Zero two♡5 小时前
Mac远程控制Windows电脑:MacBook远控软件选购指南2026
macos·电脑
fengye20716114 小时前
实验:CPython 迭代协议底层验证(`PyObject_GetIter` / `PyIter_Next`)
macos
DevLoom_1 天前
macOS 命令行 curl/git 报 SSL 证书错误?eMudhra 事件完整修复指南
git·macos·ssl
清水白石0081 天前
Python 安装与环境配置:Windows、macOS、Linux 完整指南(第2集)
windows·python·macos
hhhjhl1 天前
开源鸿蒙平台 CMP 三方库「compose-macos-26-ui」适配全流程
macos·开源·harmonyos
七牛云行业应用2 天前
DeepSeek Harness(dsh)安装完整指南:Windows、macOS、Linux 三平台 + 桌面端与 Web 端全覆盖
linux·windows·macos·ai·ai编程