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:";
我目前正在 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:";