iOS NSString initwithbytes返回null

时间:2014-03-28 09:17:36

标签: ios nsstring keychain

我有以下代码段:

uint8_t* cipherBuffer;
size_t cipherBufferSize;

sanityCheck = SecKeyEncrypt(keyRef, kSecPaddingPKCS1, nonce, (size_t)sizeof(nonce)/sizeof(nonce[0]), cipherBuffer, &cipherBuffeSize);

NSString* encryptString = [[[NSString alloc] initWithBytes:cipherBuffer length:cipherBufferSize encoding:NSUTF8StringEncoding] autoRelease];

在这里,nil总是得到encryptString

我犯错的任何建议?

2 个答案:

答案 0 :(得分:1)

您认为您获得的是有效的UTF-8格式的结果。这是不太可能的。 NSString *用于文本。加密数据是纯数据,而不是文本。要将加密数据放入Objective-C对象,您可能希望使用NSData。

答案 1 :(得分:0)

文档说:

  

如果字节串的长度大于指定的长度,则返回nil值。

您是否仔细检查过cipherBuffer的长度是否等于cipherBufferSize?