【问题标题】:unity3d android get keyhash runtimeunity3d android获取keyhash运行时
【发布时间】:2016-01-06 10:34:46
【问题描述】:

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

谢谢。

【问题讨论】:

    标签: android unity3d apk


    【解决方案1】:

    你可以像这样签入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:";

    【讨论】:

    • 我们如何在 Unity C# 端使用这个插件? checkSignature 方法有 2 个参数。你能解释一下吗? @aelimill
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-01
    • 2012-08-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多