首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >FMDB与加密

FMDB与加密
EN

Stack Overflow用户
提问于 2013-08-20 02:51:29
回答 2查看 3.4K关注 0票数 4

我使用FMDB来使用sqlite,我更希望避免对SQLCipher的依赖。我如何才能简单地利用DataProtection内置到iOS中的功能呢?这有可能吗?唯一的要求是在手机被盗时保护数据。

如果手机使用PIN解锁,用户可以访问DB --这是他们的数据。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-08-26 12:31:19

查找执行databaseWithPath: (或initWithPath:)操作的行,然后添加:

代码语言:javascript
复制
FMDatabase *db = [FMDatabase databaseWithPath:path];

NSDictionary *attributes = @{NSFileProtectionKey: NSFileProtectionCompleteUnlessOpen};
NSError *error;
BOOL success = [[NSFileManager defaultManager] setAttributes:attributes
                                                ofItemAtPath:path
                                                       error:&error];
if (!success) {
    NSLog(@"File protection failed: %@", error);
}

用于可能值键的NSFileProtectionKey是:

  • NSFileProtectionNone:该文件没有与其相关的特殊保护。它可以在任何时候读或写。
  • NSFileProtectionComplete:该文件以加密格式存储在磁盘上,当设备被锁定或启动时,无法读取或写入该文件。
  • NSFileProtectionCompleteUnlessOpen:文件以加密格式存储在磁盘上。可以在设备锁定时创建文件,但一旦关闭,则在设备解锁之前不能再次打开文件。如果文件是在解锁时打开的,您可以继续正常访问该文件,即使用户锁定了设备。在创建和打开文件时,会造成较小的性能损失,但在写入或读取文件时则不然。这可以通过在设备解锁时将文件保护更改为NSFileProtectionComplete来减轻。
  • NSFileProtectionCompleteUntilFirstUserAuthentication:该文件以加密格式存储在磁盘上,在设备启动后才能被访问。在用户第一次解锁设备后,即使用户随后锁定设备,应用程序也可以访问该文件并继续访问它。

正确的保护类型可能取决于iOS的版本(最后两种保护在iOS 4中不可用),以及设备锁定时是否使用数据库。

票数 5
EN

Stack Overflow用户

发布于 2013-08-24 01:42:34

到目前为止,最简单的方法是打开整个应用程序的数据保护。转到应用程序ID,单击“编辑”,并将“共享和权限”设置为“完全保护”。

用您的新应用程序id信息更新Xcode,从那里开始,它将自动为您的应用程序处理。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18326225

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档