Da Sie keinen Code veröffentlicht haben, ist es schwierig, genau zu wissen, auf welche Probleme Sie stoßen. Der Blog-Beitrag, auf den Sie verlinken, scheint jedoch recht anständig zu funktionieren ... abgesehen von dem zusätzlichen Komma in jedem Aufruf, CCCrypt()
das Kompilierungsfehler verursacht hat.
Ein späterer Kommentar zu diesem Beitrag enthält diesen angepassten Code , der für mich funktioniert und etwas einfacher zu sein scheint. Wenn Sie den Code für die Kategorie NSData einfügen, können Sie Folgendes schreiben: (Hinweis: Die printf()
Aufrufe dienen nur dazu, den Status der Daten an verschiedenen Stellen zu demonstrieren. In einer realen Anwendung wäre es nicht sinnvoll, solche Werte zu drucken .)
int main (int argc, const char * argv[]) {
NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
NSString *key = @"my password";
NSString *secret = @"text to encrypt";
NSData *plain = [secret dataUsingEncoding:NSUTF8StringEncoding];
NSData *cipher = [plain AES256EncryptWithKey:key];
printf("%s\n", [[cipher description] UTF8String]);
plain = [cipher AES256DecryptWithKey:key];
printf("%s\n", [[plain description] UTF8String]);
printf("%s\n", [[[NSString alloc] initWithData:plain encoding:NSUTF8StringEncoding] UTF8String]);
[pool drain];
return 0;
}
Angesichts dieses Codes und der Tatsache, dass verschlüsselte Daten nicht immer gut in einen NSString übersetzt werden können, ist es möglicherweise bequemer, zwei Methoden zu schreiben, die die von Ihnen benötigte Funktionalität vorwärts und rückwärts einschließen ...
- (NSData*) encryptString:(NSString*)plaintext withKey:(NSString*)key {
return [[plaintext dataUsingEncoding:NSUTF8StringEncoding] AES256EncryptWithKey:key];
}
- (NSString*) decryptData:(NSData*)ciphertext withKey:(NSString*)key {
return [[[NSString alloc] initWithData:[ciphertext AES256DecryptWithKey:key]
encoding:NSUTF8StringEncoding] autorelease];
}
Dies funktioniert definitiv bei Snow Leopard und @Boz berichtet, dass CommonCrypto Teil des Core-Betriebssystems auf dem iPhone ist. Sowohl 10.4 als auch 10.5 haben /usr/include/CommonCrypto
, obwohl 10.5 eine Manpage für CCCryptor.3cc
und 10.4 nicht hat, also YMMV.
EDIT: Siehe Diese Folgefrage zur Verwendung von Base64 - Kodierung für verschlüsselte Daten , welche als eine Zeichenkette Bytes (falls gewünscht) unter Verwendung von sicherem, lossless Konvertierungen.