Byt*_*yte 5 database sqlite encryption xcode ios
背景:我一直在看 WWDC 2011 - 208 Securing iOS application。他们提到如何使用名为 NSFileProtection 的文件加密来保护我们的数据。虽然我发现提到的自动方法 (@38:00) 被窃听,但我希望手动方式 (@37:00) 不是。我尝试对图像使用文件保护,一切都很好。只有我无法创建的 Sqlite。
问题:我尝试创建 SQLite3 数据库(没有核心数据),sqlite3_open_v2并将其SQLITE_OPEN_FILEPROTECTION_COMPLETE作为第三个参数的标志传递。它不会返回SQLITE_OK。
代码:
if (sqlite3_open_v2([databasePath UTF8String], &database, SQLITE_OPEN_FILEPROTECTION_COMPLETE, NULL) == SQLITE_OK){
//everything works
}else{
//failed
}
Run Code Online (Sandbox Code Playgroud)
更新:
正如 borrrden 所提到的,两者都导致了以下错误代码:(
SQLITE_MISUSE库使用不正确)
更新 2: borrrden 的第二条评论是正确的,指出需要这两个标志。它按照以下代码工作:
if (sqlite3_open_v2([databasePath UTF8String], &database, SQLITE_OPEN_CREATE|SQLITE_OPEN_READWRITE|SQLITE_OPEN_FILEPROTECTION_COMPLETE, NULL) == SQLITE_OK)
Run Code Online (Sandbox Code Playgroud)
Sqlite 对您的标志中缺少指定的文件访问模式不满意。它不知道是否应该以可写的方式打开它,或者如果它不存在则是否创建它。因此,请添加以下两个标志以及您当前使用的标志:
SQLITE_OPEN_READWRITE
SQLITE_OPEN_CREATE
这表明 sqlite 应该打开一个可写数据库,如果不存在则创建它。
| 归档时间: |
|
| 查看次数: |
1209 次 |
| 最近记录: |