I encrypt the text "a" using AES 128
I find the source throw the internet below.
I try to change key but always reuslt is same.
Always result is 8e4a3d4beb92d54c7e95f67d41daed59
NSString *key = @"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa";
// NSString *key = @"00000000000000000000000000000000";
plainText = @"a";
cipherData = [ [ plainText dataUsingEncoding:NSASCIIStringEncoding] AES128EncryptWithKey:key];
NSString * str = [self hexEncode : cipherData ];
NSLog( @"str = %@", str );
- (NSData*) iAESEncrypt:(NSString *)key keySize:(int)keySize {
if(key == nil)
return nil;
char keyPtr[keySize+1];
bzero( keyPtr, sizeof(keyPtr) );
[key getCString: keyPtr maxLength: sizeof(keyPtr) encoding:NSUTF8StringEncoding];
size_t numBytesEncrypted = 0x00;
NSUInteger dataLength = [self length];
size_t bufferSize = dataLength + kCCBlockSizeAES128;
void *buffer = malloc(bufferSize);
CCCryptorStatus result = CCCrypt( kCCEncrypt,
kCCAlgorithmAES128,
kCCOptionECBMode | kCCOptionPKCS7Padding,
keyPtr,
keySize,
NULL /*iv*/,
[self bytes], [self length],
buffer, bufferSize,
&numBytesEncrypted );
if( result == kCCSuccess )
return [NSData dataWithBytesNoCopy:buffer length:numBytesEncrypted];
else
NSLog(@"iAESEncrypt FAIL!");
free(buffer);
return nil;
}
-(NSString *) hexEncode:(NSData*)data
{
NSMutableString *hex = [NSMutableString string];
unsigned char *bytes = (unsigned char *)[data bytes];
char temp[3];
NSUInteger i = 0;
for (i = 0; i < [data length]; i++)
{
temp[0] = temp[1] = temp[2] = 0;
(void)sprintf(temp, "%02x", bytes[i]);
[hex appendString:[NSString stringWithUTF8String:temp]];
}
return hex;
}
- (NSData*)AES128EncryptWithKey:(NSString*)key
{
return [self iAESEncrypt:key keySize:kCCKeySizeAES128];
}