在使用aes128解密有效负载后,我获得了一个NSData
对象:
NSData *returnData = [ciphertext AES128DecryptWithKey:keyData withIV:ivData];
当我尝试NSLog
时,我得到以下十六进制输出:
< 2db88b73 d84599a1 5779c736 09c975b7 92750cf2 d11cb41b 19f13781 4401bc57 b2ad96c8 402e3ccf 851c0219 00aec76b>
然后我尝试将其设置为NSString:
[[NSString alloc] initWithData:returnData 编码:NSUTF8StringEncoding];
在字符串上使用NSLog()
时,我将"(null)"
作为输出。
有人可以告诉我为什么以及在哪里寻找问题?
答案 0 :(得分:1)
前一段时间与同一问题相撞,找到了答案here。
如果数据不以空值终止,则应使用-initWithData:encoding:
NSString* newStr = [[[NSString alloc] initWithData:theData
encoding:NSUTF8StringEncoding] autorelease];
如果数据以空值终止,则应使用-stringWithUTF8String:以避免结尾处的额外\ 0。
NSString* newStr = [NSString stringWithUTF8String:[theData bytes]];
(如果您启用了ARC,请删除-autorelease调用。)