我正在创建一个 cocoa 基核心数据应用程序。我想保护 sqlite 数据库,防止从应用程序中读取它。怎么办?
最佳答案
您可以使用密码算法来加密数据库,并在应用程序中使用数据库时进行解密。 CommonCrypto 或 SecurityTransform 可能是您的选择。看看Cryptographic Services Guide Apple Dev-Docs 。
所需的凭据可以安全地存储在 OS X 钥匙串(keychain)中。
因此,用户可以在每个应用程序启动/登录时解密数据库,并在离开时或其他情况下对其进行加密。
另一种方法可能是对凭据进行硬编码(也许不是一个好主意,取决于您希望应用程序使用的安全标准)并在每次读/写数据库时动态进行加密/解密,以便数据库其本身未加密,但其中的记录已加密。如果您的应用程序崩溃,这可能会更具容错性。
因此,没有“正确”的方法来完成任务,这取决于您想要存档的内容以及数据的安全性。
但无论您做什么,都不要在 NSUserDefaults 中保存任何凭据,这绝对不安全。
这就像有一个安全的箱子,而 key 就位于箱子上。
关于objective-c - 如何加密sqlite数据库核心数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22071280/