Question

J'ai le code suivant à l'intérieur de la classe Nsdata + AES256.J'essaie un cryptage AES CBC à une nstring avec le code suivant.J'ai une clé et un IV.Mais devenir null en conséquence.Ne peut pas savoir ce qui ne va pas.C'est ce que j'ai essayé -

NSString *initV= @"somekey*********";
NSData *input= [initV dataUsingEncoding:NSUTF8StringEncoding];


size_t numBytesEncrypted = 0;
CCCryptorStatus cryptStatus = CCCrypt(kCCEncrypt, kCCAlgorithmAES128, kCCModeCBC,
                                      keyPtr, kCCKeySizeAES256,
                                      [input bytes] /* initialization vector (optional) */,
                                      [self bytes], dataLength, /* input */
                                      buffer, bufferSize, /* output */
                                      &numBytesEncrypted);

Était-ce utile?

La solution

Ceci est le code qui a fonctionné pour moi enfin -

-(NSData *)AES256EncryptWithKey:(NSString *)key {
NSUInteger dataLength = [self length];
NSData *keyGiven= [key dataUsingEncoding:NSUTF8StringEncoding];    

size_t bufferSize = dataLength + kCCBlockSizeAES128;
void *buffer = malloc(bufferSize);

NSString *initV= @"***************";
NSData *input= [initV dataUsingEncoding:NSUTF8StringEncoding];

size_t numBytesEncrypted = 0;

CCCryptorRef ccRef;
CCCryptorCreate(kCCEncrypt, kCCAlgorithmAES128, 0, (const void *)[keyGiven bytes], kCCKeySizeAES256, (const void *)[input bytes], &ccRef);
CCCryptorStatus cryptStatus = CCCryptorUpdate(ccRef, [self bytes], dataLength, buffer, bufferSize, &numBytesEncrypted);
CCCryptorRelease(ccRef);

if (cryptStatus == kCCSuccess) {
    return [NSData dataWithBytesNoCopy:buffer length:numBytesEncrypted];
}
free(buffer); //free the buffer;
return nil;
}

Je convertit un nstring en Nsdata et le passant pour le cryptage.Le nstring doit être de 16 caractères.S'il est de moins de 16 caractères, je le fais 16 par des espaces ajoutés.

Je ne sais pas si cela va aider quelqu'un.Mais je pensais juste que je devrais partager.Merci.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top