如何在应用程序未运行时加密核心数据数据库

时间:2014-03-21 05:57:43

标签: core-data encryption ios7

我想在我的应用程序中使用Core Data,其中包含敏感信息。所以我想保护它不被访问,即使在没有被锁定的手机上也是如此。

现在我正在加密didEnterBackground:中的sqlite,sqlite-shm和sqlite-wal文件,并在applicationWillEnterForeground:中再次解密它们。它按预期工作,但我不知道这是否是最好的方法。例如。如果我的应用程序崩溃,它将无法加密文件。

加密和解密数据库中的单个条目/列也不是最佳选择,因为那时我不能使用谓词,对吧?

那么最先进的'是什么状态?有没有办法让sqlite文件只在应用程序打开时解密?

由于应用程序是> = iOS 7,您应该定期检查加密/解密状态(当应用程序在后台时)一个选项吗?但如果用户转过背景刷新,我又会再次丢失......

1 个答案:

答案 0 :(得分:1)

如果NSFileProtectionComplete对您来说不够(Data Protection / NSFileProtectionComplete - successfully supported through entitlements.plist?详细说明),那么SQLCipher看起来很有希望。