自我检查APK的签名

时间:2012-03-30 19:40:17

标签: android apk digital-signature

我想在运行时以编程方式检查APK的签名。我在我的开发工作站上拥有一个密钥库,所以我可以知道(不知道如何)我正在用APK签署公钥。

一旦我知道标牌后的公钥是什么,我想输入源代码并检查当前运行的应用程序是否与密钥匹配。

有可能吗?如果是这样,我如何从Eclipse生成的密钥库中获取公钥?

感谢。

2 个答案:

答案 0 :(得分:4)

你可以试试这个,它应该可行

Signature[] sigs = getPackageManager().getPackageInfo(context.getPackageName(), PackageManager.GET_SIGNATURES).signatures;
    for (Signature sig : sigs)
    {
        // log the sig here
    }

答案 1 :(得分:0)

我想我和你有同样的情况。 这是我的original solution

您可以尝试一下。

Signature sig = context.getPackageManager().getPackageInfo(context.getPackageName(), PackageManager.GET_SIGNATURES).signatures[0];
Signature releaseSig = context.getPackageManager().getPackageAchiveInfo("/mnt/sdcard/myReleaseApk.apk", PackageManager.GET_SIGNATURES).signatures[0];
return sig.hashCode() == releaseSig.hashCode;