//这个是获取SHA1的方法  public static String getCertificateSHA1Fingerprint(Context context) {      //获取包管理器      PackageManager pm = context.getPackageManager();      //获取当前要获取SHA1值的包名,也可以用其他的包名,但需要注意,      //在用其他包名的前提是,此方法传递的参数Context应该是对应包的上下文。      String packageName = context.getPackageName();      //返回包括在包中的签名信息      int flags = PackageManager.GET_SIGNATURES;      PackageInfo packageInfo = null;      try {          //获得包的所有内容信息类          packageInfo = pm.getPackageInfo(packageName, flags);      } catch (PackageManager.NameNotFoundException e) {          e.printStackTrace();      }      //签名信息      Signature[] signatures = packageInfo.signatures;      byte[] cert = signatures[0].toByteArray();      //将签名转换为字节数组流      InputStream input = new ByteArrayInputStream(cert);      //证书工厂类,这个类实现了出厂合格证算法的功能      CertificateFactory cf = null;      try {          cf = CertificateFactory.getInstance("X509");      } catch (Exception e) {          e.printStackTrace();      }      //X509证书,X.509是一种非常通用的证书格式      X509Certificate c = null;      try {          c = (X509Certificate) cf.generateCertificate(input);      } catch (Exception e) {          e.printStackTrace();      }      String hexString = null;      try {          //加密算法的类,这里的参数可以使MD4,MD5等加密算法          MessageDigest md = MessageDigest.getInstance("SHA1");          //获得公钥          byte[] publicKey = md.digest(c.getEncoded());          //字节到十六进制的格式转换          hexString = byte2HexFormatted(publicKey);      } catch (NoSuchAlgorithmException e1) {          e1.printStackTrace();      } catch (CertificateEncodingException e) {          e.printStackTrace();      }      return hexString;  }  //这里是将获取到得编码进行16进制转换  private static String byte2HexFormatted(byte[] arr) {      StringBuilder str = new StringBuilder(arr.length * 2);      for (int i = 0; i < arr.length; i++) {          String h = Integer.toHexString(arr[i]);          int l = h.length();          if (l == 1)              h = "0" + h;          if (l > 2)              h = h.substring(l - 2, l);          str.append(h.toUpperCase());          if (i < (arr.length - 1))              str.append(':');      }      return str.toString();  }  

更多相关文章

  1. Android应用崩溃后怎么查看报错信息
  2. 【转】关于Android体系架构和开发库的部分信息
  3. Unity调用高德地图API,获取定位信息(Android)
  4. Android获取系统的硬件信息、系统版本以及如何检测ROM类型
  5. Android 模拟登陆 保存密码(信息)到手机中 文件信息读取
  6. android studio的安装信息
  7. 获取android系统信息或应用程序信息
  8. iOS、Android获取文件头信息
  9. 【Android】获取apk的版本及包名等信息

随机推荐

  1. 通过修改hosts文件成功更新Android sdk .
  2. android默认焦点设置的方法
  3. Android中Alarm的机制
  4. 第一行代码 Android读书笔记(一)
  5. Now in Android:02 - 欢迎使用 Android St
  6. android动态加载Jar/dex--原创
  7. Android使用NinePatch图片实现大小可变的
  8. Android动态权限管理:Android Runtime Per
  9. 在Cocos2d-x中处理Android 系统设备的Men
  10. 最具深度及说服力的Android与iOS对比