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)
我是否遗漏了这个过程中的一个步骤?我已经确认它是空的,因为它的数据库也被存储为空。
您的问题不是 encryptedData
是 nil
,而是您试图从不代表字符串的数据创建 NSString
。
如果您希望将 encryptedData
转换为字符串以用于存储或其他目的,您应该将数据转换为 Base 64 编码表示形式。使用 base64EncodedStringWithOptions:
方法执行此操作。
NSString *base64String = [encryptedData base64EncodedStringWithOptions:0];
当然以后要解密字符串的时候,需要把Base 64编码的字符串转回NSData
,然后再解密。
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)
我是否遗漏了这个过程中的一个步骤?我已经确认它是空的,因为它的数据库也被存储为空。
您的问题不是 encryptedData
是 nil
,而是您试图从不代表字符串的数据创建 NSString
。
如果您希望将 encryptedData
转换为字符串以用于存储或其他目的,您应该将数据转换为 Base 64 编码表示形式。使用 base64EncodedStringWithOptions:
方法执行此操作。
NSString *base64String = [encryptedData base64EncodedStringWithOptions:0];
当然以后要解密字符串的时候,需要把Base 64编码的字符串转回NSData
,然后再解密。