我写了一些字符串加密的的代码,我把字符串转成nadata类型然后用AES256ParmEncryptWithKey进行加密处理,但当我对加密后的data转成nsstring时返回的却是nil
请问下这是什么原因?谢谢。
下面是数据加密处理:
请问下这是什么原因?谢谢。
NSString *testStr = @"TEST";
NSData *strData = [testStr dataUsingEncoding:NSUTF8StringEncoding];
NSData *encryptStrData = [strData AES256ParmEncryptWithKey:@"this is a test"];
NSString *decryptStr = [[NSString alloc]initWithData:encryptStrData encoding:NSUTF16StringEncoding];
NSLog(@"%@",decryptStr);
下面是数据加密处理:
- (NSData *)AES256ParmEncryptWithKey:(NSString *)key //加密
{
char keyPtr[kCCKeySizeAES256+1];
bzero(keyPtr, sizeof(keyPtr));
[key getCString:keyPtr maxLength:sizeof(keyPtr) encoding:NSUTF8StringEncoding];
NSUInteger dataLength = [self length];
size_t bufferSize = dataLength + kCCBlockSizeAES128;
void *buffer = malloc(bufferSize);
size_t numBytesEncrypted = 0;
CCCryptorStatus cryptStatus = CCCrypt(kCCEncrypt, kCCAlgorithmAES128,
kCCOptionPKCS7Padding | kCCOptionECBMode,
keyPtr, kCCBlockSizeAES128,
NULL,
[self bytes], dataLength,
buffer, bufferSize,
&numBytesEncrypted);
if (cryptStatus == kCCSuccess) {
return [NSData dataWithBytesNoCopy:buffer length:numBytesEncrypted];
}
free(buffer);
return nil;
}