如何加密&解密iOS中的NSdata?

时间:2015-03-03 13:06:07

标签: ios objective-c xcode

我正在保存一个名字& 3个电话号码进入plist。我点击保存按钮时需要加密数据。 哪一个更方便RNCryptor或NSData + AES。我该如何使用它?

 -(void)saveButton
    {    

        NSArray *paths = NSSearchPathForDirectoriesInDomains
        (NSDocumentDirectory, NSUserDomainMask, YES);
        NSString *documentsPath = [paths objectAtIndex:0]; 
        NSString *plistPath = [documentsPath stringByAppendingPathComponent:@"data.plist"];
        self.personName = theName.text;
        self.phoneNumbers = [[NSMutableArray alloc] initWithCapacity:3]; [phoneNumbers addObject:homePhone.text];
        [phoneNumbers addObject:workPhone.text];
        [phoneNumbers addObject:cellPhone.text];
        NSDictionary *plistDict = [NSDictionary dictionaryWithObjects: [NSArray arrayWithObjects: personName, phoneNumbers, nil] forKeys:[NSArray arrayWithObjects: @"Name", @"Phones", nil]];
        NSString *error = nil;
        NSData *plistData = [NSPropertyListSerialization
                             dataFromPropertyList:plistDict format:NSPropertyListXMLFormat_v1_0 errorDescription:&error];
        if(plistData) {
            // write plistData to our Data.plist file
            [plistData writeToFile:plistPath atomically:YES];
        }
        else
        {
            NSLog(@"Error in saveData: %@", error);
        }
    }

1 个答案:

答案 0 :(得分:0)

有很多NSData + AES实现,其中很多都存在严重缺陷。此外,许多不处理字符串和随机ivs的键扩展。

如果您希望安全性与RNCryptor一起使用,则它正在积极实施并提供良好的安全性。

现在接下来的问题:你将如何保护密钥?研究Keychain,没有更安全的方法来保存加密密钥。

但请确保您需要执行此操作,请查看NSData安全选项:NSDataWritingOptions