2015-02-10 62 views
-1

我正在创建一个具有450 MB的大型数据库文件的应用程序。我将它存储在SD卡中。我想保护它,因为它有一些敏感数据。如果有人能告诉我做到这一点的最佳方式,它将解决我的问题。如何在android中保护450 MB的数据库?

我也尝试过一个示例,但它为小DB文件工作。如果我使用450 MB的Db,则它不能正常工作,并且需要很长时间。

同时请让我知道是否有可能获得这么大的数据。

+0

可能将数据库保存在服务器上并通过WebServices访问它。 – 2015-02-10 08:01:13

+0

其实我的应用完全离线。 – 2015-02-10 09:14:35

+0

其实。也许,将来你需要真正的安全。 – 2015-02-10 09:24:42

回答

4

它是一种,但不是真的。您可以对其进行加密,并从服务器获取解密密钥。没有其他方法来保护它,因为用户总是可以将SD卡插入SD读卡器。如果解密密钥是本地的,他们可以反编译你的应用程序。

下面是问题 - SQLite无法使用加密文件。所以你必须把它解密到磁盘上,并且可以在那个时候抓取它。所以不,它根本不可能保护数据库文件。如果你想保留数据的秘密,你最好将信息保存在服务器上,并通过webservice查询。

+0

感谢您给我宝贵的建议,但是,我没有使用任何网络服务,这个应用程序完全离线。 – 2015-02-10 07:16:01

+0

然后你无法保护你的数据。如果您的控制之外的设备具有解密数据和手段,则始终有办法解决该问题。你可以稍微努力一点,但它仍然是一个最小的努力和对逆向工程的理解问题。 – 2015-02-10 07:21:17

+0

我认为如果数据库不在'assets'或'/ data/data/...'文件夹内,那么USB电缆就足以弹出SD卡的数据库了。 ;) – 2015-02-10 07:58:42

3

SQLCipher是一种SQLite扩展,它提供对数据库文件的透明256位AES加密。

以前的sqlcipher是SQLite的开源完整数据库加密不适用于android。但现在它可用作Android平台的alpha版本。开发人员已经更新了标准android应用程序'Notepadbot'以使用SQLCipher。

所以这绝对是目前最好也是最简单的选择。

+2

但是,如果你的apk中有解密密钥,它仍然是一个非常微不足道的事情。我不会称之为安全的,我只是说它需要一点努力。 – 2015-02-10 07:23:06

+0

对于Android的sqlCipher有任何文件大小限制?我需要加密大于2 GB的数据库,并且在我的测试中,这会因磁盘I/O错误消息而失败 – Puneet 2015-03-03 18:16:35

+0

Y是否在您的移动设备中存储了2GB的数据库? – 2015-03-03 18:17:38