目前默认的Sqlite不能设置密码,有没有什么免费方案,可以支持的。
数据库是已有数据的,默认是大小500M的初始化数据,因为数据是这个软件的核心,暂不考虑存储到云端,代价太大。
目前用的SQLite.NET, 如果有既可以加密,又有ORM支持,那就最好了。
请各位不吝赐教!
我7年前查找过相关的资料,还记录了下来,不知现在还管用不了:http://www.cnblogs.com/zzy0471/archive/2010/12/30/1922488.html
感谢关注。不过你提供的这个貌似是windows版的,加密后在android下是无法打开的,因为android端默认没有提供打开加密后sqlite的功能。
@沧海一杰: 那我想到一个办法是:把机密数据先加密然后再放到数据库里好了。
@会长: 那就没法查询了,要查询的数据就是核心。可以看,但是不能让人偷走。
我觉得既然如此,为什么不把数据统一放到服务器去呢,客户端还有自己存放数据。另外,客户端存放的数据应该不多吧,是否可以app启动的时候整体读入内存呢。
@会长: 据说SQLite可以对整体文件加密,运行时读入内存,然后在内存解密,然后直接访问内存数据库,但400~500M的数据量,一是我担心内存不足,再一个也没有找到这样的例子。
@沧海一杰: 不太了解你们的业务,这个应用需要在不联网情况下也能运行吗,为什么不放了服务器上呢。
@沧海一杰: 读取前还原文件,读取后加密文件,但是还是可能被第三方看到,就是几率小一些
你用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
@会长: 多谢,大致情形也就是这样了,SQLCipher 据说确实可以实现,但是也不知道 xamarin底下怎么引用,如何部署,试试看吧,实在不行了就放弃这种方案吧。
@沧海一杰: 祝你成功。我还是觉得数据放了服务器,用的时候从服务器请求比较好。不知道你们是不是有要求要离线工作
考虑对重要的数据进行加密
如果数据随时变动~~~比较麻烦,这种情况建议 条数据 加密,不建议资源式的整体加密。
但如果你的资源是展示的(跟游戏资源差不多),不需要修改,那就直接整体加密,启动的时候像游戏一样解密(内存化)就行了
—— 打开时间会比较久,且鉴于要使用大量内存,你还得 条数据 加密。
反正这些破解也比较简单,建议多写一些逻辑增加一些破解难度:
(基本上考虑对称des就行了)比如多次加密运算,基础密码,做一些整体或部分移位操作,然后得到每张表的密码,每张表的密码你也可以继续进行移位等操作