如何加密核心数据sqlite数据库?

时间:2014-02-27 14:21:46

标签: objective-c cocoa sqlite core-data encryption

我正在创建一个可可基础核心数据应用程序。我想保护sqlite数据库,防止将其从应用程序中读出来。怎么样?

2 个答案:

答案 0 :(得分:0)

您可以使用密码算法加密数据库,并在应用程序中使用它时解密。您可以选择CommonCrypto或SecurityTransform。看看Cryptographic Services Guide Apple Dev-Docs。 所需的凭证可以安全地存储在OS X钥匙串中。 因此,用户可以按应用程序启动/登录解密数据库,并在休假或其他事情上对其进行加密。

另一种方法可能是硬编码凭证(可能不是一个好主意,取决于您希望应用程序使用的安全标准),并且每次读/写到数据库中时都会进行解密/解密,以便数据库本身没有加密,但其中的记录是。如果您的应用程序崩溃,那可能会更容错。

因此没有“正确”的方法来完成任务,这取决于您要归档的内容以及数据的安全性。 但是,无论你做什么,都不要在 NSUserDefaults 中保存任何凭据,这绝对是不安全的。
这就像是有一个安全的胸部,它的钥匙放在胸前。

答案 1 :(得分:0)

对于iOS方面,github上有Project iMas - encrypted-core-data。它也可能对Cocoa有所帮助。

该项目的目标是:

  

提供核心数据存储,用于加密持久存储的所有数据。除初始设置外,其使用情况与Core Data完全相同,可用于使用Core Data的现有项目。

在引擎盖下,他们使用SQLCipher并将coreData方法包装到sql中。因此,您获得了加密存储,但可以使用coreData语法进行访问。无需了解SQL语法。

该项目看起来很有希望。绝对值得一看。