我想存储数据的key->值结构,例如
2354235 => string1
3453453 => string2
结构必须在构建时定义,并且不能在运行时修改(安全性原因)。它必须安全存储(只能由应用程序读取)。在源代码和sqlite db中存储它是不可接受的。还有其他想法吗?
答案 0 :(得分:1)
你问两件事:
1)在构建时,在代码或数据库之外,您可以在哪里存储它。 2)如何让它只能被应用程序读取。
对于1),我建议您只使用加密的raw
文件(将其放在/res/raw
中)。它们无法修改,可能只是CSV或JSON。检查javax.crypto包中是否有必要的入门类。
对于2),这取决于你想要它的安全性。您可以使用安全连接从服务器下载解密密钥,但是您需要确保连接到服务器的内容确实是您的应用程序。您可以使用类似here所述的内容来验证服务器中的应用程序:
<强>摘要强>
执行此操作是一个多步骤的过程,我将完整概述,但这里是简短版本:您使用通过Google Play服务提供的GoogleAuthUtil类来检索名为“ID令牌”的字符串。您将令牌发送到后端,后端可以使用它快速,低成本地验证发送的应用程序以及使用该应用程序的用户。