通过android应用获取第三方应用签名的源码

来源:互联网 发布:java书籍pdf下载 编辑:程序博客网 时间:2024/05/01 13:08

前言

以下代码,运行在Android上可以通过第三方的包名来获取第三方应用的MD5签名。

private Signature[] getRawSignature(Context paramContext, String paramString) {        if ((paramString == null) || (paramString.length() == 0)) {            errout("getSignature, packageName is null");            return null;        }        PackageManager localPackageManager = paramContext.getPackageManager();        PackageInfo localPackageInfo;        try {            localPackageInfo = localPackageManager.getPackageInfo(paramString,                    64);            if (localPackageInfo == null) {                errout("info is null, packageName = " + paramString);                return null;            }        } catch (PackageManager.NameNotFoundException localNameNotFoundException) {            errout("NameNotFoundException");            return null;        }        return localPackageInfo.signatures;    }    /**    *paramString:第三方android应用的包名    */    private String getSign(String paramString) {        Signature[] arrayOfSignature = getRawSignature(this, paramString);        if ((arrayOfSignature == null) || (arrayOfSignature.length == 0)) {            errout("signs is null");        }        StringBuffer sign = new StringBuffer();        while (true) {            return;            int i = arrayOfSignature.length;            for (int j = 0; j < i; j++)                sign.append(MD5.getMessageDigest(arrayOfSignature[j].toByteArray()));        }        return sign.toString();    }

MD5加密代码:

import java.security.MessageDigest;public final class MD5 {    public static final String getMessageDigest(byte[] paramArrayOfByte) {        char[] arrayOfChar1 = {                48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 97, 98, 99, 100, 101,                102            };        try {            MessageDigest localMessageDigest = MessageDigest.getInstance("MD5");            localMessageDigest.update(paramArrayOfByte);            byte[] arrayOfByte = localMessageDigest.digest();            int i = arrayOfByte.length;            char[] arrayOfChar2 = new char[i * 2];            int j = 0;            int k = 0;            while (true) {                if (j >= i) {                    return new String(arrayOfChar2);                }                int m = arrayOfByte[j];                int n = k + 1;                arrayOfChar2[k] = arrayOfChar1[(0xF & m >>> 4)];                k = n + 1;                arrayOfChar2[n] = arrayOfChar1[(m & 0xF)];                j++;            }        } catch (Exception localException) {        }        return null;    }    public static final byte[] getRawDigest(byte[] paramArrayOfByte) {        try {            MessageDigest localMessageDigest = MessageDigest.getInstance("MD5");            localMessageDigest.update(paramArrayOfByte);            byte[] arrayOfByte = localMessageDigest.digest();            return arrayOfByte;        } catch (Exception localException) {        }        return null;    }}

通过命令行获取签名MD5

第一步、打开Android Studio的Tools->Open Terminal..    或者是在cmd命令窗口中操作。第二步、输入命令:keytool -v -list -keystore keystore.jkskeytool这个命令,来自于jdk。

来源于:日积月累–AndroidStudio使用技巧

1 0
原创粉丝点击