Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- CCCrypt encryption result issue
- @implementation NSData (AES256)
- - (NSData *)AES256EncryptWithKey:(NSString *)key
- {
- char keyPtr[kCCKeySizeAES256+1]; // room for terminator (unused)
- bzero(keyPtr, sizeof(keyPtr)); // fill with zeroes (for padding)
- // fetch key data
- [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 /* initialization vector (optional) */,
- [self bytes], dataLength, /* input */
- buffer, bufferSize, /* output */
- &numBytesEncrypted);
- if (cryptStatus == kCCSuccess) {
- return [NSData dataWithBytesNoCopy:buffer length:numBytesEncrypted];
- }
- free(buffer); //free the buffer;
- return nil;
- }
- - (NSData *)AES256DecryptWithKey:(NSString *)key {
- char keyPtr[kCCKeySizeAES256+1]; // room for terminator (unused)
- bzero(keyPtr, sizeof(keyPtr)); // fill with zeroes (for padding)
- // fetch key data
- [key getCString:keyPtr maxLength:sizeof(keyPtr) encoding:NSUTF8StringEncoding];
- NSUInteger dataLength = [self length];
- size_t bufferSize = dataLength + kCCBlockSizeAES128;
- void *buffer = malloc(bufferSize);
- size_t numBytesDecrypted = 0;
- CCCryptorStatus cryptStatus = CCCrypt(kCCDecrypt, kCCAlgorithmAES128, kCCOptionPKCS7Padding,
- keyPtr, kCCKeySizeAES256,
- NULL /* initialization vector (optional) */,
- [self bytes], dataLength, /* input */
- buffer, bufferSize, /* output */
- &numBytesDecrypted);
- if (cryptStatus == kCCSuccess) {
- //the returned NSData takes ownership of the buffer and will free it on deallocation
- return [NSData dataWithBytesNoCopy:buffer length:numBytesDecrypted];
- }
- free(buffer); //free the buffer;
- return nil;
- }
- NSString decryptedString = [[NSString alloc]initWithData:decryptedData];
- NSData *data = [NSData dataByBase64DecodingString:decryptedString];
- decryptedString = [data dataUsingEncoding:NSUTF8StrinEncoding];
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement