J'essaye finalement de crypter un fichier avec OpenSSL et de le décrypter avec Objective-c CommonCrypto, mais avant cela, j'ai besoin des deux approches pour crypter de la même manière.Cryptage avec OpenSSL et CommonCrypto
C'est ce que j'ai:
chaîne à chiffrer: "Ceci est la chaîne"
clé: "thisisthekey"
OpenSSL:
openssl enc -aes256 -a -e -nosalt -in InputFileWithString.txt -out OutputFile.txt thisisthekey
base résultant 64 encodée chaîne de openSSL: HncUM4ryxSR7Rdi7Z49HPl9veOPxkk3l8GYIgorBhbk=
Objectif -c CommonCrypto:
+(NSString *)encryptText:(NSString *)text withKey:(NSString *)key{
NSData *plainData = [text dataUsingEncoding:NSUTF8StringEncoding];
NSData *encryptedData = [plainData AES256EncryptWithKey:key];
NSString *base64String = [encryptedData base64EncodedStringWithOptions:0];
return base64String;
}
- (NSData*)AES256EncryptWithKey:(NSString*)key {
char keyPtr[kCCKeySizeAES256 + 1];
bzero(keyPtr, sizeof(keyPtr));
[key getCString:keyPtr maxLength:sizeof(keyPtr) encoding:NSUTF8StringEncoding];
NSUInteger dataLength = [self length];
size_t bufferSize = dataLength + kCCBlockSizeAES128;
void* buffer = malloc(bufferSize);
size_t numBytesEncrypted = 0;
CCCryptorStatus cryptStatus = CCCrypt(kCCEncrypt, kCCAlgorithmAES128, kCCOptionPKCS7Padding,
keyPtr, kCCKeySizeAES256,
NULL,
[self bytes], dataLength,
buffer, bufferSize,
&numBytesEncrypted);
if (cryptStatus == kCCSuccess)
{
return [NSData dataWithBytesNoCopy:buffer length:numBytesEncrypted];
}
free(buffer);
return nil;
}
La base résultante 64 chaîne codée: gNCs4d0GAxZHRcOtu8RVpLgN0ONKk1r5XkJ4GtL7W2I=
Comme vous pouvez le voir, chaque approche produit une autre chaîne cryptée. Des idées comment faire ces deux produisent la même chaîne?
Jetez un oeil à https://github.com/rnapier/RNOpenSSLCryptor qui vous guide à travers cela et il se termine. "thisisthekey" n'est pas une clé correcte (voir la réponse de zaph ci-dessous). Il est probable que vous vouliez vraiment utiliser un mot de passe, que RNOpenSSLCryptor va gérer pour vous. –
Essayez [OpenSSL EVP_BytesToKey CommonCrypto site: stackoverflow.com] (https://www.google.com/search?q=openssl+evp_bytestokey+commoncrypto+site%3Astackoverflow.com) – jww
Celui-ci semble très pertinent: [Comment décrypter données avec l'outil Openssl crypté avec AES128 dans iOS] (http://stackoverflow.com/q/7535501), mais la réponse n'est pas très bonne car elle vous dit de visiter un blog. – jww