我有一个 Android 应用程序,我想在运行时验证其签名。这是我的代码:
@SuppressLint("PackageManagerGetSignatures")
private boolean validSignature(Context context) {
try {
PackageInfo info = context.getPackageManager()
.getPackageInfo(context.getPackageName(),
PackageManager.GET_SIGNATURES);
for (Signature signature : info.signatures) {
MessageDigest md = MessageDigest.getInstance("SHA");
md.update(signature.toByteArray());
final String currentSignature = Base64.encodeToString(md.digest(), Base64.DEFAULT).trim();
for (String validSig : validSignatureList)
if (validSig.equals(currentSignature))
return true;
}
} catch (Throwable ignored) {
}
return false;
}
对于同一个 APK,在某些设备上,APK 已通过验证,而在某些设备上则未经过验证。当我调试代码时,
signature.toByteArray()
在不同设备上有不同的值。我缺少什么以及我可以做什么来解决它?
你能找到解决这个问题的方法吗?我也有同样的问题:(