我听说我们可以加密将它们转换为NSData的文档,并使用WriteToFile方法写入目录,我实现了以下测试:
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *fileName = [documentsDirectory stringByAppendingPathComponent:@"confidencial"];
NSString *content = @"This message is confidential password number is xxxxxxxxxxxx!";
NSData *data = [content dataUsingEncoding:NSUTF8StringEncoding];
[data writeToFile:fileName options:NSDataWritingFileProtectionComplete error:nil];
文件保存在我的文档目录中,文档说明了命令 NSDataWritingFileProtectionComplete :
具有此设置的任何文件在设备后十秒受到保护 锁住了。这是最高级别的保护。用这个文件 您的程序在运行时可能无法使用设置 背景。当设备解锁时,这些文件不受保护。
要检查是否为真,我将我的设备(模拟器)锁定到我的文档目录并打开文件,我惊讶地看到了这条消息:
此消息为机密密码,为xxxxxxxxxxxx!
为什么没有加密?
答案 0 :(得分:1)
您使用NSData对字符串进行编码。编码不是加密。有区别。如果您想要真正的加密,那么您将不得不考虑使用OSX的加密服务。
但是如果你只是想让字符串不容易阅读(模糊它),那么在转换为NSData时你可以做类似的事情。请注意,这根本不安全。
NSData *data = [NSKeyedArchiver archivedDataWithRootObject:content];
当您想要将数据读回应用程序时,您将文件作为数据对象读回,然后将数据对象转换回NSString,如下所示:
NSString *content = [NSKeyedUnarchiver unarchiveObjectWithData:data];
这不是加密,但它应该模糊字符串,使得某人很难从保存的文件中读取它。