Результаты дешифрования CCCrypt -4304
Когда я шифрую строку, а затем немедленно дешифрую, CCCryptorStatus имеет значение -4304, и результирующая декодированная строка имеет неправильную длину. Кто-нибудь может увидеть, что я могу делать не так?
//Encrypt
NSString *plainText = @"e22ae25e-0b20-433a-8aa5-a5678714f590";
NSData *rawData = [plainText dataUsingEncoding:NSUTF8StringEncoding];
size_t outLength;
NSMutableData *cipherData = [NSMutableData dataWithLength:rawData.length + kCCBlockSizeAES128];
CCCryptorStatus cryptStatus = CCCrypt(kCCEncrypt, kCCAlgorithmAES128, kCCOptionPKCS7Padding, [AESKey bytes], [AESKey length], NULL, [rawData bytes], [rawData length], [cipherData mutableBytes], [cipherData length], &outLength);
//[plainText length] = 36
//[rawData length] = 36
//[cipherData length] = 52
//outLength = 48
//Decrypt
NSMutableData *decodedData = [NSMutableData dataWithLength:cipherData.length + kCCBlockSizeAES128];
//[decodedData length] = 68
CCCryptorStatus cryptStatus2 = CCCrypt(kCCDecrypt, kCCAlgorithmAES128, kCCOptionPKCS7Padding, [AESKey bytes], [AESKey length], NULL, [cipherData bytes], [cipherData length], [decodedData mutableBytes], [decodedData length], &outLength);
NSString *decodedString = [[NSString alloc] initWithData:decodedData encoding:NSUTF8StringEncoding];
//[decodedData length] = 68
//[decodedString length] = 68
/*
At this point, cryptStatus2 is -4304 and
decodedString = "e22ae25e-0b20-433a-8aa5-a5678714f590\f\f\f\f\f\f\f\f\f\f\f\f";
*/
1 ответ
Решение
Это kCCAlignmentError
в соответствии с заголовком файла. Попробуй использовать outlength
вместо [cipherData length]
,