Iphone 如何加密整个核心数据存储,而不是单个记录?

Iphone 如何加密整个核心数据存储,而不是单个记录?,iphone,core-data,Iphone,Core Data,我正在构建一个安全的应用程序,需要在CBC模式下使用AES256加密核心数据数据库。我过去通过CCCrypto库使用过这种加密 我已经看到了答案,但是没有找到关于如何加密整个核心数据SQLite数据库的最终答案 我知道有一些加密库(sqlcipher等),但我仍然想了解这样做的最佳实践。是否有人对实现此加密的最佳方法提出了建议?您针对此问题的设计模式是在运行时解密数据库并使用它,然后在应用程序关闭时重新加密它?或者,您是否希望对对象中的属性进行加密 我可能会选择加密属性。例如,您有一个名为MyC

我正在构建一个安全的应用程序,需要在CBC模式下使用AES256加密核心数据数据库。我过去通过CCCrypto库使用过这种加密

我已经看到了答案,但是没有找到关于如何加密整个核心数据SQLite数据库的最终答案


我知道有一些加密库(sqlcipher等),但我仍然想了解这样做的最佳实践。是否有人对实现此加密的最佳方法提出了建议?

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

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


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

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