//这个是获取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. 【阿里云镜像】切换阿里巴巴开源镜像站镜像——Debian镜像
  2. Android屏幕分辨率正确获取及PX,DPI,DP,SP等的对应关系
  3. Android(安卓)studio3.x 多渠道打包apk
  4. android 获取唯一标识
  5. android拍照与读取相册
  6. Android(安卓)热点开关状态的判断和获取热点ssid
  7. Android软键盘适配问题
  8. AIR Native Extension的使用(Android)一 : 打包ane
  9. android之BitMap

随机推荐

  1. 痞子衡嵌入式:飞思卡尔Kinetis开发板OpenS
  2. tomcat环境部署
  3. Git与GitLab
  4. zabbix使用jmx监控tomcat
  5. Git与SVN对比
  6. zabbix配置文件详解
  7. LVS负载均衡之DR模式部署
  8. 痞子衡嵌入式:PCM编码与Waveform音频文件(
  9. Jenkins+Maven+Gitlab+Nexus持续集成环境
  10. Windows环境下Git配置及使用