1.工具类:
package com.example.mygtest;
import android.content.Context;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
import android.util.Log;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
public class SignaturesUtils {
private static final String TAG = SignaturesUtils.class.getSimpleName();
private static byte[] getSignBytes(Context context) {
try {
PackageManager pm = context.getPackageManager();
PackageInfo packageInfo = pm.getPackageInfo(context.getPackageName(), PackageManager.GET_SIGNATURES);
return packageInfo.signatures[0].toByteArray();
} catch (PackageManager.NameNotFoundException e) {
e.printStackTrace();
}
return null;
}
private static String bytesToHex(byte[] bytes) {
StringBuilder builder = new StringBuilder();
for (byte b : bytes) {
builder.append(String.format("%02x", b));
}
return builder.toString();
}
public static String getMD5(Context context) {
try {
byte[] sig = getSignBytes(context);
// MD5
MessageDigest md = MessageDigest.getInstance("MD5");
String md5 = bytesToHex(md.digest(sig));
Log.i(TAG, "getMD5=" + md5);
return md5;
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
}
return null;
}
public static String getSHA1(Context context) {
byte[] sig = getSignBytes(context);
try {
MessageDigest md = MessageDigest.getInstance("SHA-1");
String sha1 = bytesToHex(md.digest(sig));
Log.i(TAG, "getSHA1=" + sha1);
return sha1;
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
}
return null;
}
public static String getSHA256(Context context) {
byte[] sig = getSignBytes(context);
try {
// SHA-256
MessageDigest md = MessageDigest.getInstance("SHA-256");
String sha256 = bytesToHex(md.digest(sig));
Log.i(TAG, "getSHA256=" + sha256);
return sha256;
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
}
return null;
}
}