1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63
|
(NSData *)EncryptString:(NSString*)plainString
key:(NSString *)keyString {
NSLog(@"\n\n CRYPTAGE\n\n");
NSData * encryptedData;
if (plainString == nil || [plainString length] == 0){
NSLog(@"plainString est vide");
return nil;
}
// CString for the symmetric key
char keyPtr[kCCKeySizeAES128];
[keyString getCString:keyPtr
maxLength:sizeof(keyPtr)
encoding:NSASCIIStringEncoding];
NSLog(@"keyString = %s taille = %d",keyString, sizeof(keyString));
// CString for the plain text
char plainBytes[[plainString length]];
[plainString getCString:plainBytes
maxLength:sizeof(plainBytes)
encoding:NSASCIIStringEncoding];
size_t bytesEncrypted = 0;
// Allocate the space for encrypted data
NSUInteger dataLength = [plainString length];
NSLog(@"datalength = %d",dataLength);
size_t bufferSize = dataLength + kCCBlockSizeAES128;
NSLog(@"bufferSize = %d",bufferSize);
void* buffer= malloc(bufferSize);
//const void * iv = "1010101010101010";
// Encrypt
CCCryptorStatus ret = CCCrypt(kCCEncrypt,
kCCAlgorithmAES128,
kCCOptionECBMode | kCCOptionPKCS7Padding,
keyPtr,
kCCKeySizeAES128,
NULL,
plainBytes, strlen(plainBytes),
buffer, bufferSize,
&bytesEncrypted);
//verrify
NSLog(@"bytesEncrypte = %d",bytesEncrypted);
NSLog(@"plainBytes size = %d",sizeof(plainBytes));
if (ret != kCCSuccess) {
NSLog(@"erreur code = %d",ret);
AEScipherLabel.text=@"erreur chiffrement AES";
free(buffer);
return nil;
}
else{
encryptedData = [NSData dataWithBytes:buffer
length:bytesEncrypted];
//free(buffer);
NSLog(@"encryptedData = %@",(NSString *)encryptedData);
}
return encryptedData;
} |
Partager