我有以下代码段:
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
。
我犯错的任何建议?
答案 0 :(得分:1)
您认为您获得的是有效的UTF-8格式的结果。这是不太可能的。 NSString *用于文本。加密数据是纯数据,而不是文本。要将加密数据放入Objective-C对象,您可能希望使用NSData。
答案 1 :(得分:0)
文档说:
如果字节串的长度大于指定的长度,则返回nil值。
您是否仔细检查过cipherBuffer的长度是否等于cipherBufferSize?