2017-09-15 84 views
-1

我已将加密字符串“我是个好孩子”并带有密钥“1234”,我想解密它。这是我的代码,但它最终输出“NULL”,但不是“我是一个好孩子”。我怎样才能得到正确的结果?如何在iOS中使用AES256解密字符串

NSString *content = @"VvHjCwHUjIgZOiYlncPWEoX/UInS7ZNbC4sy8ESa/fM="; 

NSData *contentData = [content dataUsingEncoding:NSUTF8StringEncoding]; 
NSUInteger dataLength = contentData.length; 

NSString *key = @"1234"; 

char keyPtr[kCCKeySizeAES256+1]; 
bzero(keyPtr, sizeof(keyPtr)); 
[key getCString:keyPtr maxLength:sizeof(keyPtr) encoding:NSUTF8StringEncoding]; 

size_t bufferSize = dataLength + kCCBlockSizeAES128; 
void *buffer = malloc(bufferSize); 
size_t numBytesDecrypted = 0; 
CCCryptorStatus cryptStatus = CCCrypt(kCCDecrypt, kCCAlgorithmAES128, 
             kCCOptionPKCS7Padding, 
             keyPtr, kCCKeySizeAES256, 
             NULL, 
             contentData.bytes, dataLength, 
             buffer, bufferSize, 
             &numBytesDecrypted); 
if (cryptStatus == kCCSuccess) { 
    NSData *result = [NSData dataWithBytesNoCopy:buffer length:numBytesDecrypted]; 
    if(result) { 
     NSString * string = [[NSString alloc]initWithData:result encoding:NSUTF8StringEncoding]; 
     NSLog(@"%@",string); 
    } 
}else { 
    free(buffer); 
} 
+0

1.“为什么不是代码工作”类型的Q超出了SO的范围。 2.至少:你具体的Q是什么?错误讯息?错误的结果?哪一个?预期结果? –

+0

感谢您的回答。我的问题是为什么它返回NULL而不是“我是一个好孩子” –

回答

0

您的数据看起来像是base64编码。你应该这样解码:

NSData *contentData = [[NSData alloc] initWithBase64EncodedString:content options:0]; 
+0

它确实对我有用。非常感谢你。 –