NSObject-ObjectIO 1.0.0

NSObject-ObjectIO 1.0.0

测试已测试
语言语言 Obj-CObjective C
许可证 自定义
发布时间上次发布2014年12月

匿名维护。



  • 作者:
  • uacaps

NSObject+ObjectIO

这是NSObject的一个类别,允许您保存和加载您的对象。它使用了NSObject+ObjectMap基础类别,并进一步扩展。该类还包括了AES256加密/解密,以便在保存和加载NSObjects时可选地保护它们。

screenshot


设置

将包括的NSObject+ObjectIO.{h,m}类拖入您的项目,并在您想要使用它们的类中导入它们。

链接到框架

  • 安全
  • CommonCrypto

保存你的NSObjects

根据应用上下文,将NSObjects保存到磁盘可能非常有用。此函数同时适用于iOS和OSX,可以在保存时保持您的NSObjects及其属性。要将NSObject保存到磁盘,请使用-(void)saveToUrl:completion:方法。

考虑因素

  • 减小文件大小:此功能将NSObject的属性(值)映射到一个单个字符的键。下图中可以查看文件大小的减少。
  • 加密:要使用最新的AES256加密保护您的数据,在加密字符串参数中传递一个密码,以及为盐字符串生成的盐。

关于盐的说明:在当代加密中,加盐密码被视为良好的做法。这为输入密码增加了一层防护,即使攻击者知道您的密码,也需要额外的信息才能获取到数据的真正内容。使用PBKDF2作为密钥导出函数,支持密钥拉伸以增加安全性。我们使用名为[NSMutableData generateSalt]的方法来生成用于加密/解密的随机ASCII字符串盐。由于这返回NSString,您应将盐存储在可检索和使用的地方,而不是在项目中的明文。对于此目的,keychain应该工作得很好,但今天的其他常见方法包括私有配置文件或数据库查询。**请务必保存此盐,因为它对于解密文件并将它们重新解析回NSObjects至关重要**!

这里有一些生成盐和将文件保存到桌面的样本代码。

NSString *salt = [NSMutableData generateSalt];

NSString *fileName = @"Filename.extension";

//Save document
[MyObject saveToDocumentsDirectoryWithName:fileName reducedFileSize:YES password:@"Password" salt:salt completion:^(NSError *error) {
    if(!error){
            //Success
        }
        else {
            //Fail
        }
}];

加载你的NSObjects

从磁盘加载数据对象与保存一样简单。只需使用-(id)objectFromURL:password:salt:方法。使用此方法唯一要考虑的是在使用之前确保已为你创建并初始化NSObject。如果加密了文件,希望你在某个安全的地方保存了盐。使用示例如下:

__block MyNSObject *newObject = [[MyNSObject alloc] init];

[newObject loadFromDocumentsDirectoryWithName:fileName password:@"Password" salt:salt completion:^(id object, NSError *error) {
    if(!error){
        //Assign object
        newObject = (MyObject *)object;
        }
        else {
        //Fail
        }
}];

面向未来

我们在加密/解密方面添加了一些安全性较高的功能,但随着标准和最佳实践的变更,跟踪这些领域将是幸运的。因此,如果您想添加pull-request或打开Issue讨论加密方法以确保其密码学上无懈可击,请不要犹豫。