java获取手机已安装APK的签名摘要
程序员文章站
2024-03-09 11:13:29
将apk发布到应用商店或接入第三方的sdk时,有时需要提供apk的签名摘要信息,可以通过摘要算法md5或sha-1来获取签名的摘要,除了获取自己的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); }
以上就是本文的全部内容,希望对大家的学习有所帮助。