MainActivity 代码: private Signature[] getRawSignature(Context paramContext, String paramString) { if ((paramString == null) || (paramString.length() == 0)) { return null; } PackageManager localPackageManager = paramContext.getPackageManager(); PackageInfo localPackageInfo; try { localPackageInfo = localPackageManager.getPackageInfo(paramString, PackageManager.GET_SIGNATURES); if (localPackageInfo == null) { return null; } } catch (PackageManager.NameNotFoundException localNameNotFoundException) { return null; } return localPackageInfo.signatures; } /** * 开始获得签名 * @param packageName 报名 * @return */ private void getSign(String packageName) { Signature[] arrayOfSignature = getRawSignature(this, packageName); if ((arrayOfSignature == null) || (arrayOfSignature.length == 0)){ return; } Log.e(TAG, Md5.getMessageDigest(arrayOfSignature[0].toByteArray())); }
新建 MD5类 :
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; } }