使用高德地图开发平台提供的方法获取,生成的key在keytool 所在目录。

// 使用代码生成打印出来

java

public static String sHA1(Context context) {
    try {
        PackageInfo info = context.getPackageManager().getPackageInfo(
                context.getPackageName(), PackageManager.GET_SIGNATURES);
        byte[] cert = info.signatures[0].toByteArray();
        MessageDigest md = MessageDigest.getInstance("SHA1");
        byte[] publicKey = md.digest(cert);
        StringBuffer hexString = new StringBuffer();
        for (int i = 0; i < publicKey.length; i++) {
            String appendString = Integer.toHexString(0xFF & publicKey[i])
                    .toUpperCase(Locale.US);
            if (appendString.length() == 1)
                hexString.append("0");
            hexString.append(appendString);
            hexString.append(":");
        }
        String result = hexString.toString();
        return result.substring(0, result.length() - 1);
    } catch (PackageManager.NameNotFoundException e) {
        e.printStackTrace();
    } catch (NoSuchAlgorithmException e) {
        e.printStackTrace();
    }
    return "";
}

kotlin

fun sHA1(context: Context): String? {
    try {
        val info = context.packageManager.getPackageInfo(
            context.packageName, PackageManager.GET_SIGNATURES
        )
        val cert = info.signatures[0].toByteArray()
        val md = MessageDigest.getInstance("SHA1")
        val publicKey = md.digest(cert)
        val hexString = StringBuffer()
        for (i in publicKey.indices) {
            val appendString = Integer.toHexString(
                0xFF and publicKey[i]
                    .toInt()
            )
                .toUpperCase(Locale.US)
            if (appendString.length == 1) hexString.append("0")
            hexString.append(appendString)
            hexString.append(":")
        }
        val result = hexString.toString()
        return result.substring(0, result.length - 1)
    } catch (e: PackageManager.NameNotFoundException) {
        e.printStackTrace()
    } catch (e: NoSuchAlgorithmException) {
        e.printStackTrace()
    }
    return ""
}

 

获取调试版的 SHA1。debug 的 SHA1 是公用的,本机上创建的所有APP都可以使用,源代码迁移到其他机器,编译运行后可能出错,要在本机生成后,填写到(高德)开放平台上(调试版本SHA1) 输入密钥库口令:android

下面的是一行命令,不要分成两行写
C:\Program Files\Java\jdk1.8.0_172\bin>keytool -list -v -keystore C:\Users\Administrator.BF-20180423DGJA\.android\debug.keystore

输入密钥库口令:
密钥库类型: jks
密钥库提供方: SUN

您的密钥库包含 1 个条目

别名: androiddebugkey
创建日期: 2018-5-7
条目类型: PrivateKeyEntry
证书链长度: 1
证书[1]:
所有者: C=US, O=Android, CN=Android Debug
发布者: C=US, O=Android, CN=Android Debug
序列号: 1
有效期为 Mon May 07 16:54:35 CST 2018 至 Wed Apr 29 16:54:35 CST 2048
证书指纹:
         MD5:  FF:09:10:D7:69:F5:B6:B9:95:D9:1B:7C:9A:76:CC:65
         SHA1: EC:2E:A2:15:9E:1C:16:07:DD:EF:00:34:BE:CC:DD:98:CF:EB:17:5A
         SHA256: E8:36:4B:05:B9:FA:7C:1F:FF:A9:C9:16:D2:96:1A:53:5A:2D:BB:A4:DB:8B:FD:DC:B0:A6:6E:8E:3E:13:08:4A
签名算法名称: SHA1withRSA
主体公共密钥算法: 1024 位 RSA 密钥
版本: 1


*******************************************
*******************************************



Warning:
JKS 密钥库使用专用格式。建议使用 "keytool -importkeystore -srckeystore C:\Users\Administrator.BF-20180423DGJA\.android\debug.keystore -destkeystore C:\Users\Administrator.BF-20180423DGJA\.android\debug.keystore -deststoretype
pkcs12" 迁移到行业标准格式 PKCS12。

C:\Program Files\Java\jdk1.8.0_172\bin>

生成自定义key的操作命令 最后生成的 keystore 在 keytool 所在目录

如果出现下面错误,请右键cmd以管理员身份运行

keytool 错误: java.io.FileNotFoundException: myapplication4.keystore (拒绝访问。)

C:\Users\Administrator.BF-20180423DGJA>keytool -genkey -alias xiaobaijia.keystor
e -keyalg RSA -validity 20000 -keystore xiaobaijia.keystore
输入密钥库口令:
再次输入新口令:
您的名字与姓氏是什么?
  [Unknown]:  wanglei
您的组织单位名称是什么?
  [Unknown]:  qinmei
您的组织名称是什么?
  [Unknown]:  qinmei
您所在的城市或区域名称是什么?
  [Unknown]:  shanghai
您所在的省/市/自治区名称是什么?
  [Unknown]:  shanghai
该单位的双字母国家/地区代码是什么?
  [Unknown]:  cn
CN=wanglei, OU=qinmei, O=qinmei, L=shanghai, ST=shanghai, C=cn是否正确?
  [否]:  y

输入 <xiaobaijia.keystore> 的密钥口令
        (如果和密钥库口令相同, 按回车):

Warning:
JKS 密钥库使用专用格式。建议使用 "keytool -importkeystore -srckeystore xiaobaiji
a.keystore -destkeystore xiaobaijia.keystore -deststoretype pkcs12" 迁移到行业标
准格式 PKCS12。

C:\Users\Administrator.BF-20180423DGJA>

发布版本的 SHA1

C:\Program Files\Java\jdk1.8.0_172\bin>keytool -list -v -keystore F:\小白+项目0619\小白+的key\xiaobaijia.keystore
输入密钥库口令:
密钥库类型: jks
密钥库提供方: SUN

您的密钥库包含 1 个条目

别名: xiaobaijia.keystore
创建日期: 2018-6-22
条目类型: PrivateKeyEntry
证书链长度: 1
证书[1]:
所有者: CN=wanglei, OU=qinmei, O=qinmei, L=shanghai, ST=shanghai, C=cn
发布者: CN=wanglei, OU=qinmei, O=qinmei, L=shanghai, ST=shanghai, C=cn
序列号: ce42059
有效期为 Fri Jun 22 16:12:43 CST 2018 至 Sat Mar 25 16:12:43 CST 2073
证书指纹:
         MD5:  63:B9:E1:3F:31:DB:AC:AE:BF:E8:4E:79:6C:E0:45:E2
         SHA1: 81:A8:1C:06:9F:B0:2A:A1:9C:F5:CE:FC:6B:EA:7F:A5:18:B4:1E:C4
         SHA256: 8E:CA:56:2A:90:0E:33:D1:35:6D:F3:0B:50:6A:7B:6B:18:EA:DF:C0:A2:25:6C:B3:62:16:B7:65:AB:A2:31:62
签名算法名称: SHA256withRSA
主体公共密钥算法: 2048 位 RSA 密钥
版本: 3

扩展:

#1: ObjectId: 2.5.29.14 Criticality=false
SubjectKeyIdentifier [
KeyIdentifier [
0000: 0C E4 9F 2C A4 AA CD 6B   5F 0F 8A 74 93 AA B2 AA  ...,...k_..t....
0010: 93 2D FF 83                                        .-..
]
]



*******************************************
*******************************************



Warning:
JKS 密钥库使用专用格式。建议使用 "keytool -importkeystore -srckeystore F:\小白+项目0619\小白+的key\xiaobaijia.keystore -destkeystore F:\小白+项目0619\小白+的key\xiaobaijia.keystore -deststoretype pkcs12" 迁移到行业标准格式 PKCS12
。

C:\Program Files\Java\jdk1.8.0_172\bin>

 

作者 wanglei

发表评论