如何加密整个Core Data存储而不是单个记录?

时间:2011-03-18 16:51:47

标签: iphone core-data

我正在构建一个安全的应用程序,需要在CBC模式下使用AES256加密Core Data数据库。我以前通过CCCrypto库使用了这种加密方式。

我见过this previous question及其中的答案,但没有找到关于如何加密整个Core Data SQLite数据库的明确答案。

我知道有一些加密库(sqlcipher等),但我仍然想了解这样做的最佳实践。有没有人有关于实现这种加密的最佳方法的建议?

2 个答案:

答案 0 :(得分:4)

简单的答案是让操作系统为您进行加密。虽然您可以在运行时自行加密和解密数据库,但是您可能会面临应用程序终止或终止处于打开状态然后数据不受保护的风险。如果您使用操作系统级加密,则可以避免此风险。

Nick Harris wrote up an excellent post on this subject last year

答案 1 :(得分:0)

此问题的设计模式是否在运行时解密数据库并使用它然后在应用程序关闭时重新加密?或者您是否希望加密对象中的属性?

我可能会选择加密属性。例如,您有一个名为MyCustomerData的敏感对象,它具有各种属性,如姓名,电话号码和信用卡。它可以符合NSCoding协议并被制作成NSData对象,然后可以使用AES加密。此加密的NSData可以存储在CoreData数据属性中。

我认为这里的一个优点可能是你可能有其他非编码的非敏感属性,这些属性可以从CoreData的标准功能中受益,如NSFetchedResultsControllers和NSPredicates。