加密数据返回nil字符串

时间:2011-07-14 11:07:43

标签: iphone

我正在使用Rijndael加密算法进行加密,它在NSData中加密。我希望加密的NSdata成为NSString。我试图将其转换为字符串,但它返回nil。有任何解决方案可以进入字符串。

我这样做

NSString *passphrase = @"super-secret";
NSStringEncoding myEncoding = NSUTF8StringEncoding;

NSString *alphaPlain = @"This is a encryption test.";
NSData *alphaDataPlain = [alphaPlain dataUsingEncoding:myEncoding];
NSLog(@"  SimpleText value : %@",alphaPlain);

NSData *alphaDataCypher = [alphaDataPlain AESEncryptWithPassphrase:passphrase];
NSString *alphaStringCypher = [[NSString alloc] initWithData:alphaDataCypher encoding:myEncoding];

NSLog(@"  Encrypted value : %@",alphaStringCypher);

返回nil值。

由于

1 个答案:

答案 0 :(得分:1)

加密数据不再是UTF8字符串,只是一些字节序列,因此将其解码为UTF8失败。

你想用字符串做什么?如果它仅用于记录/调试目的,您可以使用[myData description]来获取十六进制字符串(带有一些额外的空格以提高可读性)。如果您需要在需要文本表示的上下文中传输数据,将其转换为Base64将是一个好主意,请参阅this answer以获得一种简单的方法。