RNCryptor "encryptData" 返回 null

RNCryptor "encryptData" returning null

iOS dev 的新手,正在尝试编码数据以在 db 中安全存储数据。

我在这里找到了当前示例:https://github.com/RNCryptor/RNCryptor-objc

这是我的代码。

NSString * aPassword =@"tempkey";

NSData *data = [@"Data" dataUsingEncoding:NSUTF8StringEncoding];
NSError *error;
NSData *encryptedData = [RNEncryptor encryptData:data
                                    withSettings:kRNCryptorAES256Settings
                                        password:aPassword
                                           error:&error];


NSLog(@"Data: %@", [[NSString alloc] initWithData:encryptedData encoding:NSUTF8StringEncoding]);

我的日志

2016-10-20 11:41:52.662 BlueBoard[57245:10027277] Data: (null)

我是否遗漏了这个过程中的一个步骤?我已经确认它是空的,因为它的数据库也被存储为空。

您的问题不是 encryptedDatanil,而是您试图从不代表字符串的数据创建 NSString

如果您希望将 encryptedData 转换为字符串以用于存储或其他目的,您应该将数据转换为 Base 64 编码表示形式。使用 base64EncodedStringWithOptions: 方法执行此操作。

NSString *base64String = [encryptedData base64EncodedStringWithOptions:0];

当然以后要解密字符串的时候,需要把Base 64编码的字符串转回NSData,然后再解密。