所有Android APK都必须由开发者用私钥签名后才能安装,这个签名会留下一个无法伪造的SHA-256指纹。只要你手上的币安APK的指纹和币安官方公布的指纹完全一致,就100%确认是原版,没有任何被篡改的可能。建议从币安官网获取APK后按本文方法验证,或直接在可信设备上装币安官方APP;iPhone用户查看iOS安装教程。
数字签名是什么
Android系统要求所有APK在安装前必须经过数字签名。签名的工作原理大致是:
- 开发者生成一对公钥和私钥
- 发布APK前,用私钥对APK内容计算出一个签名块
- 签名块连同公钥证书一起打包进APK
- 安装时Android系统用公钥验证签名是否有效
- 任何对APK文件的修改都会导致签名失效,系统拒绝安装或报错
私钥由币安官方严格保管,外界无法获取。这意味着:
- 没有人能伪造币安的签名(理论上破解需要数亿年)
- 任何被植入代码的APK都必须重新签名,签名指纹会完全不同
- 只要指纹对得上,APK就一定是原版
这就是数字签名的威力——它是APP防伪的最终防线。
签名验证的核心概念
什么是 SHA-256 指纹
SHA-256是一种哈希算法,它能把任意大小的数据转换成一个固定64位十六进制字符串。对同一个证书,无论谁计算都会得到完全相同的SHA-256。
币安的签名证书指纹形如:
XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:
XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX
(32个字节,每字节用2位十六进制表示,总计64位字符)
这串字符就是币安APK的"DNA"——任何真正的官方APK都会输出这串完全一样的指纹。
三种签名方案
Android经历过几代APK签名方案:
| 方案 | 引入版本 | 特点 |
|---|---|---|
| v1 (JAR) | Android 1.0 | 基于JAR签名,仅签META-INF/ |
| v2 (APK Sig Scheme v2) | Android 7.0 | 签整个APK,安装更快 |
| v3 (APK Sig Scheme v3) | Android 9.0 | 支持密钥轮换 |
| v4 (APK Sig Scheme v4) | Android 11 | 支持增量更新 |
币安APK同时使用v1+v2+v3签名,保证在所有Android版本上都能验证通过。
方法一:用 apksigner 验证
apksigner 是Google官方提供的工具,验证最权威。
安装 apksigner
Windows:
- 下载 Android Command Line Tools(谷歌官方)
- 解压后在
build-tools/<版本号>/目录下找到apksigner.bat - 把这个目录加到环境变量 PATH
macOS / Linux:
brew install android-commandlinetools
或者下载Android Studio,apksigner会在 ~/Library/Android/sdk/build-tools/xx.x.x/ 目录。
验证签名有效性
最基本的验证:
apksigner verify --verbose Binance.apk
正常输出:
Verifies
Verified using v1 scheme (JAR signing): true
Verified using v2 scheme (APK Signature Scheme v2): true
Verified using v3 scheme (APK Signature Scheme v3): true
Number of signers: 1
任何一项为 false 都说明签名有问题,要么是APK损坏,要么是被篡改。
打印签名证书详情
apksigner verify --print-certs Binance.apk
输出示例(指纹为示意值):
Signer #1 certificate DN: CN=Binance Holdings Limited, O=Binance, L=George Town, ST=Cayman, C=KY
Signer #1 certificate SHA-256 digest:
a1:b2:c3:d4:e5:f6:07:18:29:3a:4b:5c:6d:7e:8f:90:
a1:b2:c3:d4:e5:f6:07:18:29:3a:4b:5c:6d:7e:8f:90
Signer #1 certificate SHA-1 digest:
a1:b2:c3:d4:e5:f6:07:18:29:3a:4b:5c:6d:7e:8f:90:11:22:33
Signer #1 certificate MD5 digest:
a1:b2:c3:d4:e5:f6:07:18:29:3a:4b:5c:6d:7e:8f:90
关注三个字段:
- certificate DN:应包含 "Binance Holdings Limited" 或类似的官方名称
- SHA-256 digest:必须和币安官网公布的完全一致
- Signer 数量:必须是 1(多个签名者可能意味着被二次签名)
把你算出的SHA-256和官网数值对比,每一位都必须相同。
方法二:用 keytool 验证
keytool是JDK自带的工具,不用额外安装(只要装了Java就有)。
导出证书
先把APK当作ZIP文件解压,找到 META-INF/ 目录下的证书文件(通常是 CERT.RSA 或 BINANCE.RSA):
unzip -p Binance.apk META-INF/CERT.RSA > cert.rsa
查看证书指纹
keytool -printcert -file cert.rsa
输出示例:
Owner: CN=Binance Holdings Limited, O=Binance, L=George Town
Issuer: CN=Binance Holdings Limited, O=Binance, L=George Town
Serial number: abc123def456
Valid from: Mon Jan 01 00:00:00 UTC 2020 until: Sat Dec 31 23:59:59 UTC 2049
Certificate fingerprints:
SHA1: A1:B2:C3:D4:E5:F6:07:18:29:3A:4B:5C:6D:7E:8F:90:11:22:33:44
SHA256: A1:B2:C3:D4:E5:F6:07:18:29:3A:4B:5C:6D:7E:8F:90:A1:B2:C3:D4:E5:F6:07:18:29:3A:4B:5C:6D:7E:8F:90
Signature algorithm name: SHA256withRSA
Version: 3
同样对比 SHA256 指纹和官网公布值。
方法三:在线工具验证
如果没装命令行工具,可以用一些在线APK分析工具:
- APK Analyzer 类的网站(注意选择信誉好的)
- AppMoD、APKMirror 的签名校验功能
上传APK后会显示签名信息,包括SHA-256指纹。
注意隐私风险:上传APK到第三方网站相当于把文件交给了他们。币安APK本身不含你的个人数据,但仍建议:
- 只用知名的、口碑好的在线工具
- 验证完后对方应该自动删除你上传的文件
- 避免在手机号码、账号相关的APP上用在线验证
方法四:手机上直接验证
不用电脑的懒人方案:安装一些包信息查看类APP(在可信应用市场里),打开后选择币安,查看其中的"签名信息"或"证书信息"字段,也能看到SHA-256指纹。
这种方法的前提是你手机上的这个信息查看APP本身是可信的。
验证流程的完整闭环
推荐的完整验证流程:
- 从 binance.com 下载APK
- 记下APK文件大小,和官网公布值对比(应在80-90MB)
- 运行
apksigner verify确认签名有效 - 运行
apksigner verify --print-certs获取SHA-256 - 和官网公布的SHA-256对比
- 完全一致才安装
- 安装后检查包名是否为
com.binance.dev
做完这七步,可以99.99%确认APK是原版。
常见问题
Q1: 我找不到币安官网公布的SHA-256指纹在哪
A:币安官方在帮助中心的"如何验证APK真伪"页面会公布。不同时期的主签名可能不同(如果做过密钥轮换),官网会列出所有有效的历史签名。找不到的话直接联系币安客服获取,不要用第三方网站上的"指纹"作为参考。
Q2: SHA-1 和 SHA-256 哪个更可靠
A:SHA-256更可靠。SHA-1理论上已经被证明存在碰撞漏洞,不应作为安全验证的唯一依据。但对于APK签名这种非敏感场景,SHA-1碰撞难度仍然极高。实际使用中两者都对比,更加安全。绝对不要只看MD5——MD5已被彻底攻破。
Q3: 两个不同版本的币安APK 签名指纹应该一样吗
A:应该完全一样。因为使用的是同一个签名证书。如果你对比 v2.91.0 和 v2.92.0 两个版本的APK签名,SHA-256指纹必须完全相同。不同的只是APK内容本身的哈希,证书指纹是不变的。这就是你如何判断"同一个开发者"的依据。
Q4: 签名验证通过了 但APP运行异常 是不是说明APP还是有问题
A:签名验证通过只能证明APK没被篡改,不能证明APP运行时的一切都正常。如果签名对但运行异常,可能是:① 系统版本不兼容;② 网络问题;③ 本地缓存损坏;④ 手机上有其他恶意软件干扰币安APP。首先尝试卸载重装 + 清除缓存。
Q5: iOS用户怎么验证APP的真实性
A:iOS不需要手动验证签名。Apple的沙盒机制决定了:从App Store下载的APP都由Apple签名,系统会在每次启动时自动验证签名。任何被篡改的APP无法在普通iPhone上运行。iOS用户的重点是:确认是从官方App Store下载,开发者显示为 Binance Holdings Limited。
签名验证是一次性投入
第一次学会apksigner的用法需要花10-20分钟,但之后每次验证新版APK只需要30秒。对比以下两种场景:
- 不验证的成本:万分之一的概率装到假APP,资产被盗,损失可能是几千到几十万
- 验证的成本:每次更新多花30秒
从数学期望上看,验证APK签名是回报率极高的习惯。对任何持有超过一千美元加密货币的用户,这应该是每次更新APP的标准步骤。
如果觉得命令行太麻烦,至少做最基础的两步:
- 只从 binance.com 下载
- 安装后检查包名是
com.binance.dev
这两步能挡住绝大多数仿冒版,给你的资产多一层保险。