我是IPhone Dev的新手,
我有一个包含大量安全重要数据的应用程序,经过多次搜索后,我意识到 SQLite 是将我的数据(大量)放入的最合适的方式,但我发现有些人在谈论破解受密码保护的SQLite文件,如果我使用自定义的it...or搜索来创建自己的数据结构,那么就有一种安全使用SQLite的方法。
预先鸣谢;
编辑:如果我加密了数据并在运行时对其进行解密,我将失去如下信息:
基于SQL
的
发布于 2010-11-06 15:02:08
因为SQLite数据库只是/Documents文件夹中的一个文件--您可以在启动应用程序时解密它,并在退出时重新加密它。在iPhone中已经内置了公钥和AES函数来实现这一点。
您可能希望使用用户也输入的密码。
一定要以原子/幂等的方式这样做,这样如果加密/解密/复制/移动/重命名进程被中断,就不会损坏文件!
发布于 2010-11-06 17:25:17
你看过利用东京内阁吗?您可能可以通过存储二进制对象来完成一些任务。(...just是一个想法。)
发布于 2012-06-10 09:54:41
看看http://sqlcipher.net/,它使用AES (透明地)将数据存储在SQLite中--对于用例来说,它应该足够强大。
其余的取决于你的情况:
1)系统是否离线?您将不能做一个安全的持久登录-用户将不得不在每次登录时,一个应用程序到前台,以访问数据。
你的系统在线吗?持久化登录是可能的,因为当设备丢失时,服务器端认证组件可以为用户/设备停用。用户输入密码并使用此令牌解锁数据库(具体实现由您决定,我将使用显式设备-服务器与公钥/私钥配对).
需要记住的一种特殊情况是密码更改。它可以处理使用数据重新导入到一个新的加密数据库。要旨:
您需要要求用户输入旧密码,以便解锁当前数据库进行读取,然后为新密码创建新密码,然后将旧数据导入新数据库。当进程完成后,只需删除旧的数据库.
希望能帮上忙..。
https://stackoverflow.com/questions/4113416
复制相似问题