2016-04-21 5 views
2

ich diese Objective-C Kategorie bin mit meinen String-Daten zu verschlüsseln und zu entschlüsseln: https://gist.github.com/leeprobert/b83f07ca90ad657a1cd17f94b13138b1Welche Codierung muß ich diese AES128 Daten entschlüsseln

und ich habe eine NSString Kategorie wie folgt:

@implementation NSString (AESCrypt) 

- (NSString *)AES128EncryptWithKey:(NSString *)key 
{ 
    NSData *plainData = [self dataUsingEncoding:NSUTF8StringEncoding]; 
    NSData *encryptedData = [plainData AES128EncryptedDataWithKey:key]; 

    NSString *encryptedString = [encryptedData base64Encoding]; 

    return encryptedString; 
} 

- (NSString *)AES128DecryptWithKey:(NSString *)key 
{ 
    NSData *plainData = [self dataUsingEncoding:NSUTF8StringEncoding]; 
    NSData *decryptedData = [plainData AES128DecryptedDataWithKey:key]; 

    NSString *decryptedString = [[NSString alloc] initWithData:decryptedData encoding:NSUTF8StringEncoding]; 

    return decryptedString; 
} 

@end 

Mein Problem ist, dass, wenn ich dies testen ich garbage out:

NSString* stringToEncrypt = @"Mary had a little lamb"; 
     NSString* encryptedString = [stringToEncrypt AES128EncryptWithKey:eKey]; 
     NSString* decryptedString = [encryptedString AES128DecryptWithKey:eKey]; 

     NSLog(@"encryptedString = %@, decryptedString = %@", encryptedString, decryptedString); 

dies melden Sie sich als:

encryptedString = wLnJKED9oE4zC8dS9X7XskTs8kMTP59LUj8aatxW9+c=, decryptedString = (null) 

Ich bin nicht überzeugt, dass ich die base64encoding im Verschlüsselungsprozess tun muss. Dieser Teil war der Code eines anderen. Ich versuche jetzt die Entschlüsselung zu machen.

Antwort

2

Sie haben die Base64-Codierung während der Entschlüsselung nicht berücksichtigt. Anstatt [self dataUsingEncoding:NSUTF8StringEncoding] sollten Sie [[NSData alloc] initWithBase64EncodedString:self options:0] verwenden.

Ob Sie Base64 verwenden möchten, hängt nur davon ab, was Sie tun. Es ist eine bequeme Möglichkeit, NSData (die Verschlüsselungsausgabe/Entschlüsselungseingabe) zu verwenden und sie in einen String mit einem kleinen Zeichensatz (A-Za-z0-9+/=) umzuwandeln.

+0

Sie haben mich dazu geschlagen! Ich habe es gerade ausgearbeitet, aber du bekommst den Ruhm. Danke für Ihre Antwort. :-) –

+0

Das war so eine schnelle Antwort, dass ich es noch nicht einmal akzeptieren kann. In 5 Minuten. –

Verwandte Themen