在IOS上保护sqlite文件

我有一些数据,我花了几个月收集,清理和构建。 我正在构建的应用程序将能够搜索数据。 到目前为止,我将sqlite文件存储在用户文件系统中,而不是存储在远程服务器上,因为我希望搜索结果能够立即为用户提供尽可能最佳的体验,而与其连接速度无关。

但我刚刚发现任何拥有越狱手机的人都可以在我的sqlite文件中“窃取”信息存储。

我想要的最后一件事就是让某人得到我辛勤工作的结果并将其发布在一个可能使该应用无用的网站上。

有没有办法阻止这种情况发生?

谢谢你的帮助!

你想要的是一种DRMforms。 最终,DRM无法阻止专用攻击者获取基础数据。 理论上,用户可以访问的任何内容都可以被恶意应用程序访问。

您可以加密数据库的行并在应用程序的某个位置隐藏密钥,但是一个勇敢的黑客会找到它。 您可以在第一次运行时下载整个文件,并使用该设备独有的密钥对其进行加密,但是您必须将密钥存储在某处或者具有重新生成它的算法 – 并且黑客可以获得任何一个(即使它在密钥链。)如果您需要网络连接并使用从服务器端和客户端生成的密钥……那么,攻击者可以欺骗请求并获取该服务器端组件。

所以这真的取决于你想要的安全性。 如果你只是想让诚实的人保持诚实,那么简单的加密通常就足够了。 如果你想制作一个防弹DRM系统……你将是第一个完成它的人。

您可以使用加密核心数据来保护您的数据。

该库实际上在运行时解密您的数据库。 您可以将PASSCODE保留在.m文件中。 (我的假设是很难从目标文件中获取硬编码的PASSCODE)

正如@jonathan所说,如果有人急于获取您的数据,他们会。

编辑:

正如Zaph在评论部分中提到的,不要试图直接在代码中输入密码,或者通过某种逻辑在代码中对它们进行模糊处理,因为任何急于获取密钥的人都可以对二进制文件进行反向工程并获得它。

是否可以对我的iPhone应用程序进行逆向工程?