保护您的Google Play公钥 - 解决方案

时间:2015-12-06 03:32:02

标签: android security

如何保护您的公钥:

private static byte[] xor(final byte[] input, final byte[] secret) {
  final byte[] output = new byte[input.length];
  if (secret.length == 0) {
    throw new IllegalArgumentException("empty security key");
  }
  int spos = 0;
  for (int pos = 0; pos < input.length; ++pos) {
    output[pos] = (byte) (input[pos] ^ secret[spos]);
    ++spos;
    if (spos >= secret.length) {
        spos = 0;
    }
  }
  return output;
}

这段代码看起来很棒,而且运行正常。但我的问题是如何使用它?

我的想法是这样的:创建一个&#34;秘密&#34;

  1. 使用上面的代码创建编码字符串并对其进行硬编码。
  2. 在运行时解码此编码的字符串。 每次都使用相同的秘密和相同的算法。
  3. 我的问题是隐藏秘密的地方,潜在的黑客能够获取我的公钥。因为如果秘密也是硬编码的并且算法是已知的......那么他将得到我的公钥。

1 个答案:

答案 0 :(得分:0)

不确定为什么要保护公钥(也许你的意思是私人密钥?),毕竟公钥是公开的。把它放在一边,没有代码没有你想象的那么好。它是Vigenere cipher的变体,不太安全。这些密码不难破解,并且当您使用相同的密钥加密多个内容时变得特别容易。在CBC模式下使用AES比使用AES更好。

我认为Android Key Store不适合您。

除非您使用ArxanDexguard之类的内容,否则在代码中对秘密进行硬编码将很快逆转工程。