当前位置:  开发笔记 > 前端 > 正文

如何在iPhone上加密CoreData内容

如何解决《如何在iPhone上加密CoreData内容》经验,为你挑选了3个好方法。

我有一些信息,我想在iPhone应用程序上静态加密.我是iPhone开发的新手,有些我对CoreData以及它与视图的集成方式并不十分熟悉.我将数据作为JSON,但我可以轻松地将其放入SQLITE3数据库或任何其他支持数据格式.我将采取最简单的方法(a)加密和(b)与iPhone视图层集成.

每次启动应用程序时,用户都需要输入密码来解密数据.加密的目的是在用户丢失电话时防止数据被访问.

出于速度原因,我宁愿一次加密和解密整个文件,而不是加密数据库每一行中的每个字段.

注意:这是不一样的想法的问题929744,其目的是让用户从搞乱或看到的数据.使用时数据应完全透明.

另请注意:我愿意使用SQLCipher存储数据,但更愿意使用iPhone/CoreData框架上已有的东西,而不是经历冗长的构建/集成过程.



1> Brad Larson..:

您可以通过加密它们在你的核心数据模型实体的各个属性转变的性质,然后创建一个子类NSValueTransformer将加密和解密数据,该属性.虽然这不是您正在寻找的全数据库解密,但它将比将整个数据库解密到内存中的内存占用更少.此外,它将允许懒惰地进行解密,而不是预先完成,因此您的应用程序将加载更快.根据所使用的加密,我甚至会期望用于加载每个实体的磁盘数据访问速度比属性的解密过程慢,因此在访问属性时您不会看到太多的性能损失.

像这样的可变形属性非常容易使用,因为您可以正常读取和写入它们,而加密/解密在幕后进行.



2> Tom Andersen..:

你需要加密吗?较新的iPhone(3Gs,4,iPad ......)加密设备上的所有数据.使用您的应用程序上的单个,哈希,盐渍密码,没有密码,任何人都无法访问数据.数据来自所有其他应用程序的沙箱.

iOS上的数据保护


如果用户没有在设备上设置密码,则其他人可以以应用程序可接受的方式使用该数据.
这不是正确的答案.此方法用于保护用户数据不被利用.系统工具存在缺陷,它们不保护我们的(发布者)数据.为此,开发人员需要手动执行此操作.
这是正确的答案.没有必要手动执行此操作; 请参阅https://nickharris.wordpress.com/2010/07/14/core-data-and-enterprise-iphone-applications-protecting-your-data/

3> tslater..:

我目前正在使用https://github.com/project-imas/encrypted-core-data加密我的coredata存储。它是NSIncrementalStore的自定义实现,基本上是Apple自己的具有加密选项的持久性存储的社区替代。这是一个有效的嵌入式解决方案。您还可以将sqlite文件取出,并使用在许多不同客户端中选择的任何密码对其进行解密。

该实现没有100%的覆盖率,并且不允许使用某些功能,例如子查询谓词。我应该将我的第一个PR提交给仓库,希望很快能有所改变;-)。我几乎可以用一个非常复杂的 coredata应用程序来完成它。它还具有允许您直接SQLite访问的附加优点,而不必担心Apple的实现会因您的完全更改而受到影响。

推荐阅读
乐韵答题
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有