前言
以下代码,运行在Android上可以通过第三方的包名来获取第三方应用的MD5签名。
private Signature[] getRawSignature(Context paramContext, String paramString) {
if ((paramString == null) || (paramString.length() == )) {
errout("getSignature, packageName is null");
return null;
}
PackageManager localPackageManager = paramContext.getPackageManager();
PackageInfo localPackageInfo;
try {
localPackageInfo = localPackageManager.getPackageInfo(paramString,
);
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 == )) {
errout("signs is null");
}
StringBuffer sign = new StringBuffer();
while (true) {
return;
int i = arrayOfSignature.length;
for (int j = ; 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 = {
, , , , , , , , , , , , , , ,
};
try {
MessageDigest localMessageDigest = MessageDigest.getInstance("MD5");
localMessageDigest.update(paramArrayOfByte);
byte[] arrayOfByte = localMessageDigest.digest();
int i = arrayOfByte.length;
char[] arrayOfChar2 = new char[i * ];
int j = ;
int k = ;
while (true) {
if (j >= i) {
return new String(arrayOfChar2);
}
int m = arrayOfByte[j];
int n = k + ;
arrayOfChar2[k] = arrayOfChar1[( & m >>> )];
k = n + ;
arrayOfChar2[n] = arrayOfChar1[(m & )];
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使用技巧