2012-08-17 44 views
1

我試圖將已經用AES256加密加密的NSData對象轉換爲base64 NSData對象。我的印象是,我無法直接將使用AES256加密技術加密的NSData對象轉換爲NSString,我必須先將其轉換爲base64。如何將使用AES256編碼的NSData轉換爲base64?

那麼如何將NSData對象轉換爲base64數據對象?我需要將base64數據對象轉換爲NSString。

我發現這個方法,但我不知道如何使用下面的方法將我的NSData對象轉換爲base64。

- (NSString*)base64forData:(NSData*)theData { 

const uint8_t* input = (const uint8_t*)[theData bytes]; 
NSInteger length = [theData length]; 

static char table[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz/="; 

NSMutableData* data = [NSMutableData dataWithLength:((length + 2)/3) * 4]; 
uint8_t* output = (uint8_t*)data.mutableBytes; 

NSInteger i; 
for (i=0; i < length; i += 3) { 
    NSInteger value = 0; 
    NSInteger j; 
    for (j = i; j < (i + 3); j++) { 
     value <<= 8; 

     if (j < length) { 
      value |= (0xFF & input[j]); 
     } 
    } 

    NSInteger theIndex = (i/3) * 4; 
    output[theIndex + 0] =     table[(value >> 18) & 0x3F]; 
    output[theIndex + 1] =     table[(value >> 12) & 0x3F]; 
    output[theIndex + 2] = (i + 1) < length ? table[(value >> 6) & 0x3F] : '='; 
    output[theIndex + 3] = (i + 2) < length ? table[(value >> 0) & 0x3F] : '='; 
} 

return [[NSString alloc] initWithData:data encoding:NSASCIIStringEncoding]; 
} 
+0

這個方法應該這樣做。像這樣使用它:'NSString * b64 = [self base64forData:myNsData];' – dasblinkenlight 2012-08-17 01:10:56

+0

@dasblinkenlight感謝您的幫助,如果你回答這個問題,不好意思給你信用。 – Chris 2012-08-18 01:20:17

+0

當然,沒問題:) – dasblinkenlight 2012-08-18 01:25:50

回答

1

您在您的文章提供應該工作的方法(​​有相關的討論)。

這裏是你如何使用此方法:

NSString *b64 = [self base64forData:myNsData]; 
相關問題