如何在iOS中使用AES256解密字符串

ios objective-c string

54 观看

1回复

3 作者的声誉

我已经用密钥“ 1234”加密了字符串“我是一个好男孩”,我想对其解密。这是我的代码,但最终输出“ NULL”,但不输出“我是个好男孩”。如何获得正确的结果?

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);
}
作者: 邓嘉豪 的来源 发布者: 2017 年 9 月 15 日

回应 1


0

2866 作者的声誉

决定

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

NSData *contentData = [[NSData alloc] initWithBase64EncodedString:content options:0];
作者: algrid 发布者: 2017 年 9 月 15 日
32x32