java获取手机已安装APK的签名摘要

 更新时间:2016年02月13日 17:01:23   投稿:lijiao  
这篇文章主要介绍了java获取手机已安装APK的签名摘要的相关资料,需要的朋友可以参考下

将APK发布到应用商店或接入第三方的SDK时,有时需要提供APK的签名摘要信息,可以通过摘要算法MD5或SHA-1来获取签名的摘要,除了获取自己的APK签名,也可以获取手机上其他已安装的APK签名,只需要传入其他APK的包名即可。

private static final char[] HEX_CHAR = {
 
  '0', '1', '2', '3', '4', '5', '6', '7',
 
  '8', '9', 'A', 'B', 'C', 'D', 'E', 'F'
 
};
 
/** 获取签名的MD5摘要 */
 
public String[] signatureDigest() {
 
  pkgInfo = mContext.getPackageManager().getPackageInfo(
 
        mContext.getPackageName(), PackageManager.GET_SIGNATURES);
 
  int length = pkgInfo.signatures.length;
 
  String[] digests = new String[length];
 
  for (int i = 0; i < length; ++i) {
 
    Signature sign = mPkgInfo.signatures[i];
 
    try {
 
      MessageDigest md5 = MessageDigest.getInstance("MD5");
 
      byte[] digest = md5.digest(sign.toByteArray()); // get digest with md5 algorithm
 
      digests[i] = toHexString(digest);
 
    } catch (NoSuchAlgorithmException e) {
 
      e.printStackTrace();
 
      digests[i] = null;
 
    }
 
  }
 
  return digests;
 
}
 
/** 将字节数组转化为对应的十六进制字符串 */
 
private String toHexString(byte[] rawByteArray) {
 
  char[] chars = new char[rawByteArray.length * 2];
 
  for (int i = 0; i < rawByteArray.length; ++i) {
 
    byte b = rawByteArray[i];
 
    chars[i*2] = HEX_CHAR[(b >>> 4 & 0x0F)];
 
    chars[i*2+1] = HEX_CHAR[(b & 0x0F)];
 
  }
 
  return new String(chars);
 
}

以上就是本文的全部内容,希望对大家的学习有所帮助。

相关文章

  • Go Java算法之为运算表达式设计优先级实例

    Go Java算法之为运算表达式设计优先级实例

    这篇文章主要为大家介绍了Go Java算法之为运算表达式设计优先级实例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-08-08
  • Java实现复杂的进制转换器功能示例

    Java实现复杂的进制转换器功能示例

    这篇文章主要介绍了Java实现复杂的进制转换器功能,结合实例形式分析了java数学运算的相关实现技巧,需要的朋友可以参考下
    2017-01-01
  • 程序猿必须要掌握的多线程安全问题之锁策略详解

    程序猿必须要掌握的多线程安全问题之锁策略详解

    在笔者面试过程时,经常会被问到各种各样的锁,如乐观锁、读写锁等等,非常繁多,在此做一个总结,介绍的内容如下,需要的朋友可以参考下
    2021-06-06
  • Java聊天室之实现获取Socket功能

    Java聊天室之实现获取Socket功能

    这篇文章主要为大家详细介绍了Java简易聊天室之实现获取远程服务器和客户机的IP地址和端口号功能,文中的示例代码讲解详细,需要的可以了解一下
    2022-10-10
  • Ribbon的饥饿加载(eager-load)模式解读

    Ribbon的饥饿加载(eager-load)模式解读

    这篇文章主要介绍了Ribbon的饥饿加载(eager-load)模式解读,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-04-04
  • SpringMVC实现文件下载功能

    SpringMVC实现文件下载功能

    这篇文章主要为大家详细介绍了SpringMVC实现文件下载功能,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-03-03
  • java 如何实现多语言配置i18n

    java 如何实现多语言配置i18n

    这篇文章主要介绍了java 如何实现多语言配置i18n的操作,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-08-08
  • @MapperScan扫描包里混有@Service等问题如何解决

    @MapperScan扫描包里混有@Service等问题如何解决

    这篇文章主要介绍了@MapperScan扫描包里混有@Service等问题如何解决,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-03-03
  • Java多线程Thread类的使用及注意事项

    Java多线程Thread类的使用及注意事项

    这篇文章主要介绍了Java多线程Thread类的使用及注意事项,在java标准库中提供了一个Thread类来表示/操作线程,Thread类也可以视为是java标准库提供的API
    2022-06-06
  • Spring boot中自定义Json参数解析器的方法

    Spring boot中自定义Json参数解析器的方法

    这篇文章主要介绍了Spring boot中自定义Json参数解析器的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2019-01-01

最新评论