unity3d android 获取 keyhash 运行时

unity3d android get keyhash runtime

我目前正在 Unity3d 上开发游戏。据我所知,我知道如果你以某种方式篡改 apk 文件,它的签名就会改变。现在有什么方法可以获取 apk 的当前签名,以便我可以将其与保存的签名进行匹配,并检测我的 apk 是否有任何更改。

谢谢。

你可以这样签到Java

public static boolean checkSignature(Context context,String keyToCheck) {
        try {
            PackageManager pm = context.getPackageManager();
            PackageInfo pi = pm.getPackageInfo(<your package name>, PackageManager.GET_SIGNATURES);
            for (Signature sig : pi.signatures) {
                MessageDigest sha = MessageDigest.getInstance("SHA-1");
                sha.update(sig.toByteArray());
                byte[] digest = sha.digest();
                String str = "";
                for (int di = 0; di < digest.length; di++) {
                    str += Byte.toString(digest[di]) + ":";
                }
                if (str.equals(keyToCheck)) {
                    return true;
                }
            } 
        } catch (Exception e) {
            e.printStackTrace();

        }
      return false;
    }

keyToCheck 的格式为“-111:-31:91:-71:51:-11:71:6:-41:9:-91:71:6:81:3:41:21: -81:11:-1:";