我正在开发一个有一些敏感信息的应用程序.我知道外行人很难入侵iPhone获取信息.如果我直接使用SQLite,我会使用SQLite Cipher来加密/编码数据库.
无论如何,我可以采用相同的方式加密coredata,这样黑客就很难进入数据.
有人可以对此有所了解吗?
提前致谢
核心数据现在默认加密(硬件加密)在iPhone 3GS和后来的设备上,包括iPad.这意味着使用硬件密钥自动加密数据.在iOS 4或更高版本中,按照Nick Harris更详细的博客条目中的步骤,可以启用第二层加密(称为"数据保护"),该加密也使用用户的密码来加密硬件密钥.
所有这一切都取决于用户在iOS 4中设置安全密码和启用数据保护.如果您是注册苹果开发人员,您还可以通过此链接观看iTunes中的"保护应用程序数据"的WWDC 2010视频,并在输入您的开发者ID和密码后查看幻灯片的PDF,以获取更多详细信息.文件加密.
要启用数据保护,请在- (NSPersistentStoreCoordinator *)persistentStoreCoordinator
通话中使用下面的键和值更改.sqlite文件的文件属性.有关更详细的代码,请参阅Nick Harris的博客,包括如何检查iOS 4或更高版本是否处于活动状态.
NSURL *storeURL = [[self applicationDocumentsDirectory] URLByAppendingPathComponent:@"MyAppName.sqlite"]; NSString *storePath = [storeURL path]; NSDictionary *fileAttributes = [NSDictionary dictionaryWithObject:NSFileProtectionComplete forKey:NSFileProtectionKey]; [[NSFileManager defaultManager] setAttributes:fileAttributes ofItemAtPath:storePath error:&error]