您的位置:首页 > 移动开发 > Android开发

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

2016-03-04 11:12 447 查看

前言

以下代码,运行在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
= 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.jks
keytool这个命令,来自于jdk。


来源于:日积月累–AndroidStudio使用技巧
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息