如何 encrypt/decrypt 我的 CoreData(sqlite)?我可以使用 SQLCipher 吗?
How to encrypt/decrypt my CoreData(sqlite)? Can I use SQLCipher for it?
- 如果我想保护我的应用程序的数据库,我可以做什么?
- 使用 SQLCipher 我需要知道什么?
对用户数据实施附加保护是一个非常好的主意,尤其是当应用程序处理用户的财务信息、安全笔记、密码时,e.t.c。默认情况下,数据库未加密。它唯一的保护形式是它与其他应用程序隔离开来。
为此,您可以使用以下方法之一:
- 使用 NSFileProtectionKey
- 如果用户丢失 phone。
,此方法有助于防止数据被访问
NSDictionary *storeOptions = @{ NSPersistentStoreFileProtectionKey : NSFileProtectionComplete };
[coordinator addPersistentStoreWithType:NSSQLiteStoreType configuration:nil URL:[self storeURL] options:storeOptions error:&error])
NSFileProtectionComplete
- 文件以加密格式存储在磁盘上,在设备锁定或启动时无法读取或写入。
- 如果未设置密码或攻击者可以通过物理访问解锁设备,则可以在设备越狱时访问数据库文件及其内容。
- 有用的链接
- WWDC 2012 Protecting the User’s Data
- NSFileProtectionKey documentation
- 可变形属性
- 如果您需要使用多个加密密钥或仅加密某些属性,此选项就足够了。 Details here.
- SQLCipher
- 如果需要加密整个数据库的文件,您可以使用
SQLCipher
。它是 SQLite
的开源扩展,提供透明的 256 位 AES 加密。
- 你应该被警告几件事:
- 性能略有下降 -- SQLCipher 声称数据库开销约为 5-15% I/O。
- 更大的应用程序大小,如果使用 SQLite -- 您必须嵌入 SQLCipher 的副本,而不是使用系统内置的 SQLite 库。
- 在某些情况下,您可能需要获得 ERN(BIS 的加密注册批准)
- 要安装 SQLCipher,你可以阅读 zeletetic 的 official tutorial 的 just use a cocoapod
pod 'SQLCipher'
- 要加密现有数据库,您需要使用
sqlcipher_export()
。 Example
- SQLCipher 和 CoreData
- CoreData 不能直接与 SQLCipher 一起使用,但是您可以使用这个 project 来达到这个目的
- 如果我想保护我的应用程序的数据库,我可以做什么?
- 使用 SQLCipher 我需要知道什么?
对用户数据实施附加保护是一个非常好的主意,尤其是当应用程序处理用户的财务信息、安全笔记、密码时,e.t.c。默认情况下,数据库未加密。它唯一的保护形式是它与其他应用程序隔离开来。
为此,您可以使用以下方法之一:
- 使用 NSFileProtectionKey
- 如果用户丢失 phone。 ,此方法有助于防止数据被访问
NSDictionary *storeOptions = @{ NSPersistentStoreFileProtectionKey : NSFileProtectionComplete };
[coordinator addPersistentStoreWithType:NSSQLiteStoreType configuration:nil URL:[self storeURL] options:storeOptions error:&error])
NSFileProtectionComplete
- 文件以加密格式存储在磁盘上,在设备锁定或启动时无法读取或写入。- 如果未设置密码或攻击者可以通过物理访问解锁设备,则可以在设备越狱时访问数据库文件及其内容。
- 有用的链接
- WWDC 2012 Protecting the User’s Data
- NSFileProtectionKey documentation
- 可变形属性
- 如果您需要使用多个加密密钥或仅加密某些属性,此选项就足够了。 Details here.
- SQLCipher
- 如果需要加密整个数据库的文件,您可以使用
SQLCipher
。它是SQLite
的开源扩展,提供透明的 256 位 AES 加密。 - 你应该被警告几件事:
- 性能略有下降 -- SQLCipher 声称数据库开销约为 5-15% I/O。
- 更大的应用程序大小,如果使用 SQLite -- 您必须嵌入 SQLCipher 的副本,而不是使用系统内置的 SQLite 库。
- 在某些情况下,您可能需要获得 ERN(BIS 的加密注册批准)
- 要安装 SQLCipher,你可以阅读 zeletetic 的 official tutorial 的 just use a cocoapod
pod 'SQLCipher'
- 要加密现有数据库,您需要使用
sqlcipher_export()
。 Example - SQLCipher 和 CoreData
- CoreData 不能直接与 SQLCipher 一起使用,但是您可以使用这个 project 来达到这个目的
- 如果需要加密整个数据库的文件,您可以使用