当前位置: 移动技术网 > IT编程>开发语言>Java > java获取手机已安装APK的签名摘要

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

2019年07月22日  | 移动技术网IT编程  | 我要评论

美型妖精大混战108,南阳桥震门,伍思民

将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);
 
}

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

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网