我想将一些信息静态加密存储在 iPhone 应用程序上。我是 iPhone 开发新手,对 CoreData 以及它如何与视图集成不太熟悉。我的数据为 JSON,但我可以轻松地将其放入 SQLITE3 数据库或任何其他支持数据格式中。我将采用 (a) 加密和 (b) 与 iPhone 视图层集成最简单的方法。
每次启动应用程序时,用户都需要输入密码来解密数据。加密的目的是在用户丢失手机时防止数据被访问。
出于速度原因,我更愿意立即加密和解密整个文件,而不是加密数据库每行中的每个单独字段。
注:这个isn't相同的想法问题 929744 https://stackoverflow.com/questions/929744/encrypting-sqlite-database-file-in-iphone-os,其目的是防止用户弄乱或查看数据。使用时数据应该完全透明。
另请注意:我愿意使用SQL密码 http://www.mobileorchard.com/tutorial-iphone-sqlite-encryption-with-sqlcipher/存储数据,但更愿意使用 iPhone/CoreData 框架上已经存在的东西,而不是经历冗长的构建/集成过程。
您可以通过将核心数据模型实体中的各个属性加密为可变形的属性 https://developer.apple.com/library/ios/samplecode/PhotoLocations/Introduction/Intro.html,然后创建一个 NSValueTransformer 子类,它将加密和解密该属性的数据。虽然这不是您正在寻找的整个数据库解密,但它比将整个数据库解密到内存中的内存占用要低得多。此外,它允许延迟解密,而不是预先全部完成,因此您的应用程序加载速度会更快。根据所使用的加密,我什至预计用于加载每个实体的磁盘数据访问将比属性的解密过程慢,因此在访问属性时您不会看到太多的性能损失。
像这样的可转换属性非常容易使用,因为您可以像平常一样读取和写入它们,而加密/解密则在幕后进行。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)