// NSData+AES128.h
// NSData+AES128.m
Calling this methods as
for more detail Codes, Blog details.
// // NSData+AES128.h // AES128 // // Created by GauravDS on 16/12/14. // #import@interface NSData (AES128) - (NSData *)AES128EncryptedDataWithKey:(NSString *)key; - (NSData *)AES128DecryptedDataWithKey:(NSString *)key; - (NSData *)AES128EncryptedDataWithKey:(NSString *)key iv:(NSString *)iv; - (NSData *)AES128DecryptedDataWithKey:(NSString *)key iv:(NSString *)iv; @end
// NSData+AES128.m
// // NSData+AES128.m // AES128 // // Created by GauravDS on 16/12/14. // #import "NSData+AES128.h" #import@implementation NSData (AES128) - (NSData *)AES128EncryptedDataWithKey:(NSString *)key { return [self AES128EncryptedDataWithKey:key iv:nil]; } - (NSData *)AES128DecryptedDataWithKey:(NSString *)key { return [self AES128DecryptedDataWithKey:key iv:nil]; } - (NSData *)AES128EncryptedDataWithKey:(NSString *)key iv:(NSString *)iv { return [self AES128Operation:kCCEncrypt key:key iv:iv]; } - (NSData *)AES128DecryptedDataWithKey:(NSString *)key iv:(NSString *)iv { return [self AES128Operation:kCCDecrypt key:key iv:iv]; } - (NSData *)AES128Operation:(CCOperation)operation key:(NSString *)key iv:(NSString *)iv { char keyPtr[kCCKeySizeAES128 + 1]; bzero(keyPtr, sizeof(keyPtr)); [key getCString:keyPtr maxLength:sizeof(keyPtr) encoding:NSUTF8StringEncoding]; char ivPtr[kCCBlockSizeAES128 + 1]; bzero(ivPtr, sizeof(ivPtr)); if (iv) { [iv getCString:ivPtr maxLength:sizeof(ivPtr) encoding:NSUTF8StringEncoding]; } NSUInteger dataLength = [self length]; size_t bufferSize = dataLength + kCCBlockSizeAES128; void *buffer = malloc(bufferSize); size_t numBytesEncrypted = 0; CCCryptorStatus cryptStatus = CCCrypt(operation, kCCAlgorithmAES128, kCCOptionPKCS7Padding | kCCOptionECBMode, keyPtr, kCCBlockSizeAES128, ivPtr, [self bytes], dataLength, buffer, bufferSize, &numBytesEncrypted); if (cryptStatus == kCCSuccess) { return [NSData dataWithBytesNoCopy:buffer length:numBytesEncrypted]; } free(buffer); return nil; } @end
Calling this methods as
- (void)AES128Test {
NSString *key = @"e8ffc7e56311679f12b6fc91aa77a5eb";
NSData *cipherData;
NSString *base64Text;
NSString *plainText;
//############## Request(crypt) ##############
////---- Plain text -> AES128
plainText = @"Hello, world!";
cipherData = [[plainText dataUsingEncoding:NSUTF8StringEncoding] AES128EncryptedDataWithKey:key];
NSLog(@"crypt AES128: %@", cipherData);
////---- AES128 -> base64
// base 64 encryption
base64Text = [cipherData base64EncodedStringWithOptions:0];
NSLog(@"crypt AES128+base64: %@", base64Text);
//############## Response(decrypt) ##############
////---- AES128 -> plain text
plainText = [[NSString alloc] initWithData:[cipherData AES128DecryptedDataWithKey:key]
encoding:NSUTF8StringEncoding];
NSLog(@"decrypt AES128: %@",plainText);
////---- base64 -> AES128 -> plain text
// NSData from the Base64 encoded str
cipherData = [[NSData alloc] initWithBase64EncodedString:base64Text
options:0];
plainText = [[NSString alloc] initWithData:[cipherData AES128DecryptedDataWithKey:key]
encoding:NSUTF8StringEncoding];
NSLog(@"decrypt AES128+base64: %@", plainText);
}
for more detail Codes, Blog details.
No comments:
Post a Comment