使用高德地图开发平台提供的方法获取,生成的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 mykeystore.keystor
e -keyalg RSA -validity 20000 -keystore mykeystore.keystore
输入密钥库口令:
再次输入新口令:
您的名字与姓氏是什么?
[Unknown]: mykeystore
您的组织单位名称是什么?
[Unknown]: mykeystore
您的组织名称是什么?
[Unknown]: mykeystore
您所在的城市或区域名称是什么?
[Unknown]: shanghai
您所在的省/市/自治区名称是什么?
[Unknown]: shanghai
该单位的双字母国家/地区代码是什么?
[Unknown]: cn
CN=mykeystore, OU=mykeystore, O=mykeystore, L=shanghai, ST=shanghai, C=cn是否正确?
[否]: y
输入 <mykeystore.keystore> 的密钥口令
(如果和密钥库口令相同, 按回车):
Warning:
JKS 密钥库使用专用格式。建议使用 "keytool -importkeystore -srckeystore mykeystore
a.keystore -destkeystore mykeystore.keystore -deststoretype pkcs12" 迁移到行业标
准格式 PKCS12。
C:\Users\Administrator.BF-20180423DGJA>
发布版本的 SHA1
C:\Program Files\Java\jdk1.8.0_172\bin>keytool -list -v -keystore F:\project\mykey\mykeystore.keystore
输入密钥库口令:
密钥库类型: jks
密钥库提供方: SUN
您的密钥库包含 1 个条目
别名: mykeystore.keystore
创建日期: 2018-6-22
条目类型: PrivateKeyEntry
证书链长度: 1
证书[1]:
所有者: CN=mykeystore, OU=mykeystore, O=mykeystore, L=shanghai, ST=shanghai, C=cn
发布者: CN=mykeystore, OU=mykeystore, O=mykeystore, 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:\project\mykey\mykeystore.keystore -destkeystore F:\project\mykey\mykeystore.keystore -deststoretype pkcs12" 迁移到行业标准格式 PKCS12
。
C:\Program Files\Java\jdk1.8.0_172\bin>