获取应用签名信息和签名哈希

一:获取签名的信息

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=

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值