我们有一个Android应用程序,它将数据存储在本地SQLite数据库中;主要是为了性能,但也允许离线工作(因为我们经常在低信号区域)。
目前,数据以加密格式存储(从我们的Web服务器传递下来),但这本身会导致性能问题,例如,如果我们想要搜索特定"姓氏&的记录#34;,我们需要解密所有数据,而不是使用直接的SQL查询,以包括其中surname =' Smith'
我们不能(目前的情况下)将数据存储为更友好的开放式格式,因为它可能会以“根”形式存储数据。设备,获取MySQL数据库的副本,打开它并读取数据。
是否存在密码保护本地SQLite数据库或以某种方式应用加密的方法(可能有人可以提供示例),以便我们可以(从应用程序的角度)以开放格式提供数据库,但是如果任何想成为黑客的人都掌握了设备并植根了......他们会很难读取我们的数据吗?
我搜索了一个合适的解决方案,找不到SQLite数据库,任何第三方软件或任何代码示例的任何选项。
答案 0 :(得分:1)
SqlCipher,这可能适合你的情况
答案 1 :(得分:0)
远程存储:
您的数据非常敏感,用户需要在不同的设备上随时访问。如果您的应用程序是一个很好的应用程序,那么上面的行将成立。
安全性+任何设备的远程访问都表示您在远程服务器上保持dB。
您的流程可以是:
用户登录 - >令牌 - >每次通话中都有验证令牌 - >在dB中处理请求和获取/放置数据
本地存储:
假设您只想在本地存储数据,而不想将其存储在服务器上。为此,您可以使用公钥加密
您可以在应用中使用公钥来加密数据并进行存储。现在,您想要访问数据。从服务器请求私钥并解密它。
同样,要访问私钥,您应该使用某种形式的授权(或任何人都可以访问您的密钥)。
如果没有私钥,即使黑客掌握手机并将手放在dB上,数据也无济于事。