Как расшифровать закодированное в base 64 значение - PullRequest
0 голосов
/ 01 марта 2012

Я новичок в разработке для iphone. Я использую

-(NSString *)Base64Encode:(NSData *)data
{
    //Point to start of the data and set buffer sizes 
    int inLength = [data length]; 
    int outLength = ((((inLength * 4)/3)/4)*4) + (((inLength * 4)/3)%4 ? 4 : 0); 
    const char *inputBuffer = [data bytes]; 
    char *outputBuffer = malloc(outLength); 
    outputBuffer[outLength] = 0; 
    //64 digit code 
    static char Encode[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; 
    //start the count
    int cycle = 0; 
    int inpos = 0;
    int outpos = 0; 
    char temp; 
    //Pad the last to bytes, the outbuffer must always be a multiple of 4 
    outputBuffer[outLength-1] = '='; 
    outputBuffer[outLength-2] = '=';  

    while (inpos < inLength)
    {     switch (cycle) 
        {         case 0:         
            outputBuffer[outpos++] = Encode[(inputBuffer[inpos]&0xFC)>>2];      
            cycle = 1;            
            break;         
        case 1:            
            temp = (inputBuffer[inpos++]&0x03)<<4; 
            outputBuffer[outpos] = Encode[temp];    
            cycle = 2;       
            break;        
        case 2:         
            outputBuffer[outpos++] = Encode[temp|(inputBuffer[inpos]&0xF0)>> 4];      
            temp = (inputBuffer[inpos++]&0x0F)<<2; 
            outputBuffer[outpos] = Encode[temp];   
            cycle = 3;                            
            break;       
        case 3:      
            outputBuffer[outpos++] = Encode[temp|(inputBuffer[inpos]&0xC0)>>6];   
            cycle = 4;       
            break;    
        case 4:          
            outputBuffer[outpos++] = Encode[inputBuffer[inpos++]&0x3f];  
            cycle = 0;   
            break; 
        default:
            cycle = 0; 
            break;    
        }
    } 
    NSString *pictemp = [NSString stringWithUTF8String:outputBuffer];
    free(outputBuffer);
    return pictemp;
}   

этот код для шифрования данных, и это логика, которую я также использую в своем коде Java. Но у меня нет никакой идеи, как написать логику дешифрования в цели c для этого метода зашифрованного результата. есть идея, пожалуйста, помогите мне. Заранее спасибо!

1 Ответ

1 голос
/ 02 марта 2012

Проверьте http://cocoawithlove.com/2009/06/base64-encoding-options-on-mac-and.html Отличный блог для программистов Objective-C!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...