首页 新闻 会员 周边 捐助

Xamarin Android 开发, Sqlite 加密方案?

0
悬赏园豆:50 [已解决问题] 解决于 2017-08-03 15:16

目前默认的Sqlite不能设置密码,有没有什么免费方案,可以支持的。

数据库是已有数据的,默认是大小500M的初始化数据,因为数据是这个软件的核心,暂不考虑存储到云端,代价太大。

目前用的SQLite.NET, 如果有既可以加密,又有ORM支持,那就最好了。

请各位不吝赐教!

空明流光的主页 空明流光 | 初学一级 | 园豆:111
提问于:2017-07-31 16:30
< >
分享
最佳答案
0

我7年前查找过相关的资料,还记录了下来,不知现在还管用不了:http://www.cnblogs.com/zzy0471/archive/2010/12/30/1922488.html

收获园豆:50
会长 | 专家六级 |园豆:12463 | 2017-08-01 09:02

感谢关注。不过你提供的这个貌似是windows版的,加密后在android下是无法打开的,因为android端默认没有提供打开加密后sqlite的功能。

空明流光 | 园豆:111 (初学一级) | 2017-08-01 09:16

@沧海一杰: 那我想到一个办法是:把机密数据先加密然后再放到数据库里好了。

会长 | 园豆:12463 (专家六级) | 2017-08-01 09:18

@会长: 那就没法查询了,要查询的数据就是核心。可以看,但是不能让人偷走。

空明流光 | 园豆:111 (初学一级) | 2017-08-01 09:19

我觉得既然如此,为什么不把数据统一放到服务器去呢,客户端还有自己存放数据。另外,客户端存放的数据应该不多吧,是否可以app启动的时候整体读入内存呢。

会长 | 园豆:12463 (专家六级) | 2017-08-01 09:55

@会长: 据说SQLite可以对整体文件加密,运行时读入内存,然后在内存解密,然后直接访问内存数据库,但400~500M的数据量,一是我担心内存不足,再一个也没有找到这样的例子。

空明流光 | 园豆:111 (初学一级) | 2017-08-02 09:55

@沧海一杰: 不太了解你们的业务,这个应用需要在不联网情况下也能运行吗,为什么不放了服务器上呢。

会长 | 园豆:12463 (专家六级) | 2017-08-02 10:55

@沧海一杰: 读取前还原文件,读取后加密文件,但是还是可能被第三方看到,就是几率小一些

会长 | 园豆:12463 (专家六级) | 2017-08-02 11:03

你用google搜索过解决方案吗,我搜到一些:你看看怎么样:

https://stackoverflow.com/questions/37217628/android-security-on-saving-data

https://stackoverflow.com/questions/40485278/how-to-secure-android-database-file

https://stackoverflow.com/questions/3140230/sqlite-database-security

会长 | 园豆:12463 (专家六级) | 2017-08-02 11:05

@会长: 多谢,大致情形也就是这样了,SQLCipher 据说确实可以实现,但是也不知道 xamarin底下怎么引用,如何部署,试试看吧,实在不行了就放弃这种方案吧。

空明流光 | 园豆:111 (初学一级) | 2017-08-03 15:15

@沧海一杰: 祝你成功。我还是觉得数据放了服务器,用的时候从服务器请求比较好。不知道你们是不是有要求要离线工作

会长 | 园豆:12463 (专家六级) | 2017-08-03 15:22
其他回答(2)
0

考虑对重要的数据进行加密

MrNice | 园豆:3468 (老鸟四级) | 2017-07-31 16:45
0

如果数据随时变动~~~比较麻烦,这种情况建议  条数据 加密,不建议资源式的整体加密。

但如果你的资源是展示的(跟游戏资源差不多),不需要修改,那就直接整体加密,启动的时候像游戏一样解密(内存化)就行了

—— 打开时间会比较久,且鉴于要使用大量内存,你还得  条数据 加密。

反正这些破解也比较简单,建议多写一些逻辑增加一些破解难度:

  (基本上考虑对称des就行了)比如多次加密运算,基础密码,做一些整体或部分移位操作,然后得到每张表的密码,每张表的密码你也可以继续进行移位等操作

花飘水流兮 | 园豆:13615 (专家六级) | 2017-07-31 22:13
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册