Android获取HASH值

在注册资料的时候需要填写hash值,这里记录一下获取hash值的方法。

import android.content.Context;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
import android.content.pm.Signature;
import android.util.Base64;
import android.util.Log;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;

public class AppSignatureHelper {
    private static final String TAG = AppSignatureHelper.class.getSimpleName();
    //返回 SHA 哈希值
    public static String getAppSignatures(Context context) {
        String result = "";
        try {
            PackageInfo packageInfo = context.getPackageManager().getPackageInfo(
                    context.getPackageName(),
                    PackageManager.GET_SIGNATURES);
            for (Signature signature : packageInfo.signatures) {
                MessageDigest messageDigest = MessageDigest.getInstance("SHA");
                messageDigest.update(signature.toByteArray());
                result += Base64.encodeToString(messageDigest.digest(), Base64.DEFAULT) + "\n";
            }
        } catch (PackageManager.NameNotFoundException | NoSuchAlgorithmException e) {
            Log.e(TAG, "Failed to get app signatures", e);
        }
        return result;
    }
    //返回MD5 哈希值
    public static String getAppSignaturesMd5(Context context) {
        String result = "";
        try {
            PackageInfo packageInfo = context.getPackageManager().getPackageInfo(
                    context.getPackageName(),
                    PackageManager.GET_SIGNATURES);
            for (Signature signature : packageInfo.signatures) {
                MessageDigest messageDigest = MessageDigest.getInstance("MD5");
                messageDigest.update(signature.toByteArray());
                result += Base64.encodeToString(messageDigest.digest(), Base64.DEFAULT) + "\n";
            }
        } catch (PackageManager.NameNotFoundException | NoSuchAlgorithmException e) {
            Log.e(TAG, "Failed to get app signatures", e);
        }
        return result;
    }
}