我们正在制作一个 Android 应用程序,一个问答游戏,我们希望在用户离线时缓存问题和答案。这样做的问题是,在用户回答问题之前,我们需要向用户隐瞒这些数据。否则很容易作弊,对游戏造成伤害。然后可以提取所有问题和答案并自动将答案提交给服务器 API。
最方便的方法是在安装时从我们的服务器检索 key 或 secret ,将其隐藏在“某处”,并使用它与服务器通信,以及对存储中的问题和答案进行加密。但显然,将其隐藏在“某处”并不是一个安全的概念。
我研究了一下,似乎在这种情况下不可能进行可靠的加密,因为应用程序必须“知道” secret (无论是证书、密码短语 + salt,还是其他什么)或者至少它在哪里可以找到,这个可以通过反编译提取出来。然而,我们会觉得它足够难做。
问题是:您是否知道一种方法可以让普通用户难以从 APK 中检索 secret - 即,几乎不可能编写自动 key 提取程序?
到目前为止我最好的猜测:
- 在数据库中隐藏一些信息,并将其用作 key 的盐
- 从设备中添加几位信息作为盐(IMEI、电子邮件地址、序列号...)——也许再加上加盐的方式可能难以获得?
最佳答案
您可以为每个问题使用单独的键,这取决于对上一个问题的回答。因此,除非您已经回答了问题 1,否则无法解密问题 2。
关于android - 加密 Android 设备上的信息(合理防止用户访问),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6388470/