【发布时间】:2016-01-06 10:34:46
【问题描述】:
我目前正在 Unity3d 上开发游戏。据我所知,我知道如果你以某种方式篡改了 apk 文件,它的签名就会改变。现在有什么方法可以获取 apk 的当前签名,以便我可以将其与保存的签名进行匹配,并检测我的 apk 是否进行了任何更改。
谢谢。
【问题讨论】:
我目前正在 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:";
【讨论】: