当前位置:   article > 正文

ANDROID STUDIO 获取调试版与发布版SHA1、生成自定义 KEYSTORE

发布版sha1

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

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

java

  1. public static String sHA1(Context context) {
  2. try {
  3. PackageInfo info = context.getPackageManager().getPackageInfo(
  4. context.getPackageName(), PackageManager.GET_SIGNATURES);
  5. byte[] cert = info.signatures[0].toByteArray();
  6. MessageDigest md = MessageDigest.getInstance("SHA1");
  7. byte[] publicKey = md.digest(cert);
  8. StringBuffer hexString = new StringBuffer();
  9. for (int i = 0; i < publicKey.length; i++) {
  10. String appendString = Integer.toHexString(0xFF & publicKey[i])
  11. .toUpperCase(Locale.US);
  12. if (appendString.length() == 1)
  13. hexString.append("0");
  14. hexString.append(appendString);
  15. hexString.append(":");
  16. }
  17. String result = hexString.toString();
  18. return result.substring(0, result.length() - 1);
  19. } catch (PackageManager.NameNotFoundException e) {
  20. e.printStackTrace();
  21. } catch (NoSuchAlgorithmException e) {
  22. e.printStackTrace();
  23. }
  24. return "";
  25. }

kotlin

  1. fun sHA1(context: Context): String? {
  2. try {
  3. val info = context.packageManager.getPackageInfo(
  4. context.packageName, PackageManager.GET_SIGNATURES
  5. )
  6. val cert = info.signatures[0].toByteArray()
  7. val md = MessageDigest.getInstance("SHA1")
  8. val publicKey = md.digest(cert)
  9. val hexString = StringBuffer()
  10. for (i in publicKey.indices) {
  11. val appendString = Integer.toHexString(
  12. 0xFF and publicKey[i]
  13. .toInt()
  14. )
  15. .toUpperCase(Locale.US)
  16. if (appendString.length == 1) hexString.append("0")
  17. hexString.append(appendString)
  18. hexString.append(":")
  19. }
  20. val result = hexString.toString()
  21. return result.substring(0, result.length - 1)
  22. } catch (e: PackageManager.NameNotFoundException) {
  23. e.printStackTrace()
  24. } catch (e: NoSuchAlgorithmException) {
  25. e.printStackTrace()
  26. }
  27. return ""
  28. }

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

  1. 下面的是一行命令,不要分成两行写
  2. C:\Program Files\Java\jdk1.8.0_172\bin>keytool -list -v -keystore C:\Users\Administrator.BF-20180423DGJA\.android\debug.keystore
  3. 输入密钥库口令:
  4. 密钥库类型: jks
  5. 密钥库提供方: SUN
  6. 您的密钥库包含 1 个条目
  7. 别名: androiddebugkey
  8. 创建日期: 2018-5-7
  9. 条目类型: PrivateKeyEntry
  10. 证书链长度: 1
  11. 证书[1]:
  12. 所有者: C=US, O=Android, CN=Android Debug
  13. 发布者: C=US, O=Android, CN=Android Debug
  14. 序列号: 1
  15. 有效期为 Mon May 07 16:54:35 CST 2018 至 Wed Apr 29 16:54:35 CST 2048
  16. 证书指纹:
  17. MD5: FF:09:10:D7:69:F5:B6:B9:95:D9:1B:7C:9A:76:CC:65
  18. SHA1: EC:2E:A2:15:9E:1C:16:07:DD:EF:00:34:BE:CC:DD:98:CF:EB:17:5A
  19. 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
  20. 签名算法名称: SHA1withRSA
  21. 主体公共密钥算法: 1024 位 RSA 密钥
  22. 版本: 1
  23. *******************************************
  24. *******************************************
  25. Warning:
  26. JKS 密钥库使用专用格式。建议使用 "keytool -importkeystore -srckeystore C:\Users\Administrator.BF-20180423DGJA\.android\debug.keystore -destkeystore C:\Users\Administrator.BF-20180423DGJA\.android\debug.keystore -deststoretype
  27. pkcs12" 迁移到行业标准格式 PKCS12。
  28. C:\Program Files\Java\jdk1.8.0_172\bin>

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

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

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

  1. C:\Users\Administrator.BF-20180423DGJA>keytool -genkey -alias mykeystore.keystor
  2. e -keyalg RSA -validity 20000 -keystore mykeystore.keystore
  3. 输入密钥库口令:
  4. 再次输入新口令:
  5. 您的名字与姓氏是什么?
  6. [Unknown]: mykeystore
  7. 您的组织单位名称是什么?
  8. [Unknown]: mykeystore
  9. 您的组织名称是什么?
  10. [Unknown]: mykeystore
  11. 您所在的城市或区域名称是什么?
  12. [Unknown]: shanghai
  13. 您所在的省/市/自治区名称是什么?
  14. [Unknown]: shanghai
  15. 该单位的双字母国家/地区代码是什么?
  16. [Unknown]: cn
  17. CN=mykeystore, OU=mykeystore, O=mykeystore, L=shanghai, ST=shanghai, C=cn是否正确?
  18. [否]: y
  19. 输入 <mykeystore.keystore> 的密钥口令
  20. (如果和密钥库口令相同, 按回车):
  21. Warning:
  22. JKS 密钥库使用专用格式。建议使用 "keytool -importkeystore -srckeystore mykeystore
  23. a.keystore -destkeystore mykeystore.keystore -deststoretype pkcs12" 迁移到行业标
  24. 准格式 PKCS12。
  25. C:\Users\Administrator.BF-20180423DGJA>

发布版本的 SHA1

  1. C:\Program Files\Java\jdk1.8.0_172\bin>keytool -list -v -keystore F:\project\mykey\mykeystore.keystore
  2. 输入密钥库口令:
  3. 密钥库类型: jks
  4. 密钥库提供方: SUN
  5. 您的密钥库包含 1 个条目
  6. 别名: mykeystore.keystore
  7. 创建日期: 2018-6-22
  8. 条目类型: PrivateKeyEntry
  9. 证书链长度: 1
  10. 证书[1]:
  11. 所有者: CN=mykeystore, OU=mykeystore, O=mykeystore, L=shanghai, ST=shanghai, C=cn
  12. 发布者: CN=mykeystore, OU=mykeystore, O=mykeystore, L=shanghai, ST=shanghai, C=cn
  13. 序列号: ce42059
  14. 有效期为 Fri Jun 22 16:12:43 CST 2018 至 Sat Mar 25 16:12:43 CST 2073
  15. 证书指纹:
  16. MD5: 63:B9:E1:3F:31:DB:AC:AE:BF:E8:4E:79:6C:E0:45:E2
  17. SHA1: 81:A8:1C:06:9F:B0:2A:A1:9C:F5:CE:FC:6B:EA:7F:A5:18:B4:1E:C4
  18. 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
  19. 签名算法名称: SHA256withRSA
  20. 主体公共密钥算法: 2048 位 RSA 密钥
  21. 版本: 3
  22. 扩展:
  23. #1: ObjectId: 2.5.29.14 Criticality=false
  24. SubjectKeyIdentifier [
  25. KeyIdentifier [
  26. 0000: 0C E4 9F 2C A4 AA CD 6B 5F 0F 8A 74 93 AA B2 AA ...,...k_..t....
  27. 0010: 93 2D FF 83 .-..
  28. ]
  29. ]
  30. *******************************************
  31. *******************************************
  32. Warning:
  33. JKS 密钥库使用专用格式。建议使用 "keytool -importkeystore -srckeystore F:\project\mykey\mykeystore.keystore -destkeystore F:\project\mykey\mykeystore.keystore -deststoretype pkcs12" 迁移到行业标准格式 PKCS12
  34. C:\Program Files\Java\jdk1.8.0_172\bin>

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Monodyee/article/detail/250575?site
推荐阅读
相关标签
  

闽ICP备14008679号