Android 安卓存储数据(来自web服务的更新)的最佳和最安全的方式是什么

Android 安卓存储数据(来自web服务的更新)的最佳和最安全的方式是什么,android,database,web-services,security,Android,Database,Web Services,Security,我看到了类似的问题,但它们不符合我的要求 我有一个应用程序,需要不时从web服务更新。数据包含url、描述、标题等字段。从200k到400k条目。 它在本地使用,并且经常在这些数据之间执行搜索(取决于用户的活动) 用户不应该访问数据,搜索需要尽可能快。我知道没有办法让它100%不可读,一切都可以反向工程和解密(我必须把加密密钥保存在手机上)。我的目标是使它尽可能困难 我几乎没有选择: 1.加密服务器上的数据,并将其作为二进制文件发送到手机。每次需要时解密它 2.还可以将数据作为文件发送。读取它,

我看到了类似的问题,但它们不符合我的要求

我有一个应用程序,需要不时从web服务更新。数据包含url、描述、标题等字段。从200k到400k条目。 它在本地使用,并且经常在这些数据之间执行搜索(取决于用户的活动)

用户不应该访问数据,搜索需要尽可能快。我知道没有办法让它100%不可读,一切都可以反向工程和解密(我必须把加密密钥保存在手机上)。我的目标是使它尽可能困难

我几乎没有选择: 1.加密服务器上的数据,并将其作为二进制文件发送到手机。每次需要时解密它 2.还可以将数据作为文件发送。读取它,存储到本地数据库 3.将其作为JSON(可能是加密的)获取,并存储到数据库或文件中

使用JSON有一个优点,因为它更容易实现本地数据和远程数据之间差异的更新

还有一个关于数据库的问题。我是否应该存储所有加密的条目,并在每次需要查找内容时对其进行解密?这可能会影响手机的性能

还有一个可能的保护层——使加密密钥动态化。每天从服务器获取一次密钥,重新加密存储的数据,第二天密钥更改。不过,我想这是一笔开销。如果不是,告诉我

你会选择什么选项?有没有更好的解决办法

p.S.数据库将每天更新


谢谢

我会将数据存储在SQLite中,但也会使用至少两个密钥使解密方案更加复杂。。。一个存储在共享库中,另一个从服务下载并用该密钥解锁

这也会影响您的思考策略-您可以将一个“设备”键(APK随附)作为硬编码字节[]嵌入到.SO中,另一个“每日”键将用于打开“每日”数据更新。尽管如此,我还是宁愿使用bytearray格式的“daily”密钥,永远不要将其以任何形式保存在设备上,除非在使用期间将其解密到内存中。这将是对我所做工作的升级,我只是将该密钥保存为base64编码的devicekey加密字符串

使用SQLite相当简单,您可以在这里看到-

我做了一些类似于我在这里解释的事情(但是没有更新每日键)


查看并讨论:)

40万条电话输入?