一:获取签名的信息
keytool -v -list -keystore E:\projects\MyApplication\app\ddd.jks
keyAlias 'demo'
keyPassword '123456'
storeFile file('demo.jks')
storePassword '123456'
随后输入你的密钥库口令,我的秘钥库口令是123456,再次回车得到的结果:
密钥库类型: JKS
密钥库提供方: SUN
您的密钥库包含 1 个条目
别名: key01
创建日期: 2021-3-9
条目类型: PrivateKeyEntry
证书链长度: 1
证书[1]:
所有者: CN=ceshi, OU=ceshi, O=ceshi, L=ceshi, ST=ceshi, C=ceshi
发布者: CN=ceshi, OU=ceshi, O=ceshi, L=ceshi, ST=ceshi, C=ceshi
序列号: 334f3a98
有效期开始日期: Tue Mar 09 17:37:56 CST 2021, 截止日期: Thu Feb 13 17:37:56 CST 2121
证书指纹:
MD5: 2C:F6:D8:5C:0D:27:88:84:9C:F4:1D:32:FB:59:4A:11
SHA1: BF:53:61:D0:44:2C:0E:AC:1A:00:66:41:84:F7:21:9E:AE:74:D7:0B
SHA256: BC:92:F4:E3:EC:40:C4:28:FC:0A:5D:9D:50:8F:B4:FF:31:15:26:8E:4E:DC:76:36:A3:77:D8:09:C7:FB:ED:2A
签名算法名称: SHA256withRSA
版本: 3
扩展:
#1: ObjectId: 2.5.29.14 Criticality=false
SubjectKeyIdentifier [
KeyIdentifier [
0000: CE A4 2A 45 87 A4 F0 D1 65 79 BA 3D 9C 8F AB 7A ..*E....ey.=...z
0010: FB 4D 35 21 .M5!
]
]
*******************************************
*******************************************
二:获取应用的签名哈希,一般是国外的sdk要,facebook,支付,微软这些;下面是获取的两种方式
1.直接运行代码
运行前先将你的debug时的签名改为你当前真正需要的那个签名,如下,我的debug和release都是用的demo.jks签名
android {
...
signingConfigs {
appConfigs {
keyAlias 'demo'
keyPassword '123456'
storeFile file('demo.jks')
storePassword '123456'
}
}
buildTypes {
release {
minifyEnabled false
signingConfig signingConfigs.appConfigs
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
debug {
minifyEnabled false
signingConfig signingConfigs.appConfigs
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
添加运行代码
try {
val info = packageManager.getPackageInfo("你的包名", PackageManager.GET_SIGNATURES)
for (signature in info.signatures) {
val md = MessageDigest.getInstance("SHA")
md.update(signature.toByteArray())
Log.e("***","==>${Base64.encodeToString(md.digest(), Base64.DEFAULT)}")
}
} catch (e: Exception) {
e.printStackTrace()
}
得到的结果:wf7V+pHUs+YqkbNS+xoVvJDzbH0=
2.用openssl命令行,适用于windows 10
首先得确保你下载了openssl,不然命令行会报
C:\Users\lenovo>keytool -exportcert -alias key01 -keystore E:\projects\MyApplication\app\ddd.jks | openssl sha1 -binary | openssl base64
'openssl' 不是内部或外部命令,也不是可运行的程序
或批处理文件。
下面是openssl的下载链接 https://code.google.com/archive/p/openssl-for-windows/downloads?fbclid=IwAR0eMhJcQ1EP-payhflRmRmzEujreGuOIE_y3-0i1DR9thWywewqYX5G2rQ
或
https://download.youkuaiyun.com/download/qq_33994844/15703673
下载 openssl-0.9.8e_X64,测了下,用其他的,会出现生成的不是28位
将其解压至你想要的的目录下,我的是C盘 C:\open\bin\openssl.exe
再次使用命令行
keytool -exportcert -alias 你的签名alias -keystore E:\projects\MyApplication\app\demo.jks | C:\open\bin\openssl.exe sha1 -binary | C:\open\bin\openssl.exe base64
改下你的签名alias;签名路径;你的openssl的存放路径即可;
输入你的输入密钥库口令: 我的是123456
即可得到你的签名哈希
C:\Users\lenovo>keytool -exportcert -alias demo -keystore E:\projects\HEIF-converter-master\MyApplication\app\demo.jks | C:\open\bin\openssl.exe sha1 -binary | C:\open\bin\openssl.exe base64
输入密钥库口令: 123456
wf7V+pHUs+YqkbNS+xoVvJDzbH0=