Meine Objective-C App erfordert Text-/Stringverschlüsselung (speziell nsstring ).
Ich weiß, dass AES die sicherste Verschlüsselungsmethode ist, die für Verbraucher verfügbar ist. Ich weiß auch, wie man Zeichenketten in Daten umwandelt und zurück... (ich bin nur ein Anfänger).
Viele Webseiten und Fragen zur Verschlüsselung mit AES sind unklar, und auf keiner Seite steht, wie der angegebene Code zu verwenden ist. Auf einer Webseite könnte zum Beispiel stehen: "hier ist der Code... hier ist, was er tut...", aber keine Erklärung, wie man ihn benutzt.
Ich habe diesen Code durch viel Recherche gefunden:
#import "<CommonCrypto/CommonCryptor.h>"
@implementation NSMutableData(AES)
Für die Verschlüsselung:
- (NSMutableData*) EncryptAES:(NSString *)key {
char keyPtr[kCCKeySizeAES256+1];
bzero( keyPtr, sizeof(keyPtr) );
[key getCString: keyPtr maxLength: sizeof(keyPtr) encoding: NSUTF16StringEncoding];
size_t numBytesEncrypted = 0;
NSUInteger dataLength = [self length];
size_t bufferSize = dataLength + kCCBlockSizeAES128;
void *buffer = malloc(bufferSize);
NSMutableData *output = [[NSData alloc] init];
CCCryptorStatus result = CCCrypt(kCCEncrypt, kCCAlgorithmAES128, kCCOptionPKCS7Padding, keyPtr, kCCKeySizeAES256, NULL, [self mutableBytes], [self length], buffer, bufferSize, &numBytesEncrypted);
output = [NSMutableData dataWithBytesNoCopy:buffer length:numBytesEncrypted];
if(result == kCCSuccess) {
return output;
}
return NULL;
}
Für die Entschlüsselung:
- (NSMutableData*)DecryptAES: (NSString*)key andForData:(NSMutableData*)objEncryptedData {
char keyPtr[kCCKeySizeAES256+1];
bzero( keyPtr, sizeof(keyPtr) );
[key getCString:keyPtr maxLength:sizeof(keyPtr) encoding:NSUTF16StringEncoding];
size_t numBytesEncrypted = 0;
NSUInteger dataLength = [self length];
size_t bufferSize = dataLength + kCCBlockSizeAES128;
void *buffer_decrypt = malloc(bufferSize);
NSMutableData *output_decrypt = [[NSData alloc] init];
CCCryptorStatus result = CCCrypt(kCCDecrypt , kCCAlgorithmAES128, kCCOptionPKCS7Padding, keyPtr, kCCKeySizeAES256, NULL, [self mutableBytes], [self length], buffer_decrypt, bufferSize, &numBytesEncrypted);
output_decrypt = [NSMutableData dataWithBytesNoCopy:buffer_decrypt length:numBytesEncrypted];
if(result == kCCSuccess) {
return output_decrypt;
}
return NULL;
}
}
Dies ist der Code, den ich gemacht habe und der mit dem obigen Code übereinstimmen soll:
- (void)Encrypt {
//Convert NSString to NSData so that it can be used to encrypt the Input
NSString *Input = [Inputbox text];
NSData *InputData = [Input dataUsingEncoding:NSUTF8StringEncoding];
//What to do here
}
Wie verwende ich diesen Code, diese Methoden? Wo wird er in meiner Implementierungsdatei verwendet?