1.获取keystore的签名信息
(1)使用keytool命令可获取签名信息
签名文件是keystore格式或jks格式,可以使用keytool命令获取签名信息,在命令窗口输入以下命令:
keytool -list -v -keystore xxx.keystore
(2)输出信息如下:
输入密钥库口令:
密钥库类型: JKS
密钥库提供方: SUN
您的密钥库包含 1 个条目
别名: test2020
创建日期: 2020-11-6
条目类型: PrivateKeyEntry
证书链长度: 1
证书[1]:
序列号: 4c12ed74
有效期开始日期: Fri Nov 06 14:29:47 CST 2020, 截止日期: Tue Oct 31 14:29:47 CST 2045
证书指纹:
MD5: 0D:25:AA:77:19:26:C1:AA:BB:CC:DD:24:E5:53:D1:41
SHA1: 25:60:80:BA:85:5A:FC:AA:BB:CC:DD:60:88:8B:DE:06:22:91:D1:90
SHA256: 95:8B:9A:88:CC:C8:CE:60:3E:B3:AA:BB:CC:DD:87:C7:20:07:B0:27:20:FD:D8:71:CA:2D:73:3B:80:31:5F:07
签名算法名称: SHA256withRSA
版本: 3
(3)解析
a. keytool 是java 用于管理密钥和证书的工具,官方文档
b. keytool 采用 keystore 文件来存储密钥及证书,其中可包括私钥、信任证书;
keystore 文件主要使用 JKS格式(也可支持其他格式),带密钥存储;其中私钥的存储也有独立的密码;
c. 签名的输出信息包括签名的MD5, SHA1和SHA256等信息。
2. 获取签名的base64的值
签名的base64字符是指sha1值经过base64的格式转换,常用于sdk后台的签名登记。下面介绍如何转化为base64的值
keytool -exportcert -alias YOUR_ALIAS -keystore ./xxx.keystore | openssl sha1 -binary | openssl base64
(1)YOUR_ALIAS: 是你的签名对应的alias别名,注意填写自己的正确的别名。
(2)xxx.keystore: 是本地的签名文件
(3)注意:-alias后面带的别名字符,字符间的空格只能保留一个,多余的空格会导致生成的base64不一样
(4)密码确保输入正确,虽然即使错误的密码也能生成base64字符,但是最终使用时是没效的。
输出信息如下:
JWCAuoVa/Kq7zN1giIveBiKR0ZA=
3 . 通过网站转换base64的值
如果已知sha1的值,可通过网站转换为base64。地址
在Hex string中输入sha1的值,sha1值可通过keytool先查看,记得去除冒号,点击convert就可获取到base64的值, output是最终的值
4.获取APK的签名
如果只有apk文件,我们怎样获取签名信息。首先把apk的扩展名改为.zip, 然后解压文件,打开META-INF目录,里面有个CERT.RSA文件,使用keytool命令获取到签名信息。
命令如下:
keytool -printcert -file ./CERT.RSA