APK哈希签名是否会发生变化?

时间:2016-09-01 23:56:56

标签: android hash

我们有一些应用程序使用相同的Web服务,我们需要一种方法来唯一标识哪个应用程序正在调用Web服务。

我最终做的是发送应用程序的哈希签名以及其他参数。获取签名的代码与此https://stackoverflow.com/a/25524657/17648类似。

然后我有一个存储了所有哈希的表,以后我可以使用它来与Web服务的调用进行比较,找出哪个应用程序称为哪种方法。

通过这样做,我不需要在调用Web服务时创建switch语句。

现在这个工作正常,但我只是想确保我们发布的任何版本的apk的哈希签名都相同,并且对于安装的任何手机/平板电脑也是如此。

1 个答案:

答案 0 :(得分:1)

该答案中的代码实际上是从您的密钥库中散列公钥,因为它实际上是signatures字段中的内容。如果使用SHA-256哈希算法,则获得与通过Java 7 +的keytool命令转储密钥库的哈希值相同的值。

这会导致两个潜在的问题:

  1. 对于使用相同签名密钥库签名的任何应用,您应获得相同的值。要区分应用程序,您需要使用不同的签名密钥库。无论如何,你可能会这样做。

  2. 技术上,byte[]的{​​{1}}的确切格式没有记录。它们可能会改变未来的情况。因此,您可能需要在不久的将来使用依赖于版本的逻辑。

  3. 恕我直言,您的算法并不比仅使用Signature,使用应用程序ID好。