Android 如何保护我的SQLite数据库

Android 如何保护我的SQLite数据库,android,sqlite,Android,Sqlite,我是一名入门级开发人员,正在开发一款Android应用程序,它完全依赖于我存储在SQLite数据库中的数据。我不想让其他人看到我数据库中的数据。应用程序很简单。我用应用程序打包数据库,代码从该数据库读取数据(脱机模式)。在这种模式下,我很少更新数据。 有人能提出更好的方法吗 以下是我尝试过的: 尝试使用SQLCipher,但最终在代码中的某些地方写入了“密码短语”/“密码”。任何可以查看我的代码的人都可以很容易地看到带有“密码”的我的数据 第二种方法我想的是,如何使这个数据库在线?这意味着我需要

我是一名入门级开发人员,正在开发一款Android应用程序,它完全依赖于我存储在SQLite数据库中的数据。我不想让其他人看到我数据库中的数据。应用程序很简单。我用应用程序打包数据库,代码从该数据库读取数据(脱机模式)。在这种模式下,我很少更新数据。 有人能提出更好的方法吗

以下是我尝试过的: 尝试使用SQLCipher,但最终在代码中的某些地方写入了“密码短语”/“密码”。任何可以查看我的代码的人都可以很容易地看到带有“密码”的我的数据

第二种方法我想的是,如何使这个数据库在线?这意味着我需要将DB服务器或AWS机器以及从该DB服务器检索到的所有数据联机吗?如果这种方法更好,我计划使用Mongo DB(如果其他工具更好,建议使用)。从代码中,我需要指定ConnectionString,对吗?黑客或其他程序员看不到这些凭证。在这里,我需要简单和最好的解决方案。问这个问题的原因是,我不能花太多的钱购买任何商业软件等


如果这个问题看起来很简单,请告诉我。

使用SQLCIPHER和JNI保护ANDROID SQLITE DB

1) SQLCipher: SQLCipher是SQLite的开源扩展,它为数据库文件提供透明的256位AES加密

Its提供对Java、Python、Android、iOS等的支持

2) JNI(Java本机接口): 至于安全性,它使用256位AES算法,需要密钥来加密或解密文件。 所以我们使用JNI来安全地存储密钥

如何整合到项目中

步骤:

创建新项目 给出包名 选择“包括C++支持”选项 创建活动并完成。 在build.gradle(应用程序)中添加以下行 编撰

'net.zettetic:android数据库sqlcipher:3.5.4'


同步项目。

使用SQLCIPHER和JNI保护ANDROID SQLITE DB

1) SQLCipher: SQLCipher是SQLite的开源扩展,它为数据库文件提供透明的256位AES加密

Its提供对Java、Python、Android、iOS等的支持

2) JNI(Java本机接口): 至于安全性,它使用256位AES算法,需要密钥来加密或解密文件。 所以我们使用JNI来安全地存储密钥

如何整合到项目中

步骤:

创建新项目 给出包名 选择“包括C++支持”选项 创建活动并完成。 在build.gradle(应用程序)中添加以下行 编撰

'net.zettetic:android数据库sqlcipher:3.5.4'


同步项目。

如果您不想让用户看到您的数据,请不要将其保存在他们的设备中,而是将其放在服务器中。你可以使用任何你喜欢的服务器,只要在网上做一些研究,找出哪一个适合你。有人能帮我吗?我能在SQLCiper中使用加密的密码吗?如果是,有人能帮我怎么做吗?如果你不想让用户看到你的数据,不要把它放在他们的设备上,把它放在你的服务器上。你可以使用任何你喜欢的服务器,只要在网上做一些研究,找出哪一个适合你。有人能帮我吗?我能在SQLCiper中使用加密的密码吗?如果是,有人能帮我怎么做吗?正如我上面提到的,我们在SQLCipher中存储密码或密码短语的地方?SQLCipher实际上是用于应用程序包中不包含关键材料的地方(即不用作DRM)。在此模型中,密钥材料来自其他地方(例如,以pin或密码的形式来自用户,或来自密钥服务、安全密钥库等其他方式)。感谢您的回复。在这种情况下,目标黑客/程序员也可以提供PIN,一旦安装了应用程序,他就可以使用相同的PIN来浏览数据,对吗?或者我在这里遗漏了什么?正如我前面提到的,我们在SQLCipher中存储密码或密码短语的地方?SQLCipher实际上是用于应用程序包中不包含关键材料的地方(即不用作DRM)。在此模型中,密钥材料来自其他地方(例如,以pin或密码的形式来自用户,或来自密钥服务、安全密钥库等其他方式)。感谢您的回复。在这种情况下,目标黑客/程序员也可以提供PIN,一旦安装了应用程序,他就可以使用相同的PIN来浏览数据,对吗?还是我在这里遗漏了什么?