Я использовал эту функцию для шифрования 3des.
ccStatus = CCCrypt(kCCEncrypt, // CCoperation op
kCCAlgorithm3DES, // CCAlgorithm alg
kCCOptionPKCS7Padding, // kCCOptionPKCS7Padding, //kCCModeECB, // CCOptions
[_keyData bytes], // const void *key
kCCKeySize3DES, // 3DES key size length 24 bit
vinitVec, //iv, // const void *iv,
[dTextIn bytes], // const void *dataIn
[dTextIn length], // size_t dataInLength
bufferPtr, // void *dataOut
bufferPtrSize, // size_t dataOutAvailable
&movedBytes); // size_t *dataOutMoved
NSData *myData = [NSData dataWithBytes:(const void *)bufferPtr length:(NSUInteger)movedBytes];'
Хотя он работает. но когда я конвертирую этот NSData в NSString , поскольку NSString содержит много нулевых завершений, NSString заканчивается при первом нулевом завершении, переменная не может содержать все данные. но я должен отправить зашифрованную строку на сервер. что я могу сделать, чтобы преобразовать NSData в NSString. строка, содержащая все данные означает (если данные содержат нулевое завершение, в этом случае строка не закончится)?
Пожалуйста, помогите Заранее спасибо.
спасибо за ответ, посмотрите, содержит ли зашифрованный байт
char bytes[] = { 'H', 'e', 'l', 'l', 'o', \0, 'W', 'o', 'r', 'l', 'd', \0 };
NSData *data = [NSData dataWithBytes:bytes length:sizeof(bytes)];
NSString *str = [[NSString alloc] initWithData:data encoding:NSASCIIStringEncoding];
NSLog(@"%@", str);
NSString *sendtoserver=[NSString stringwithformat:@"<request>%@</request>",str];
когда мы конвертируем эти NSData в NSString. он закончится первым \0 (нулевое завершение), потому что мы должны отправить зашифрованный NSString. Поэтому это создает проблему. и я не могу отправить строку base64, потому что серверная сторона этого не хочет. Они просили строку шифрования.
так что я делаю сейчас, пожалуйста, помогите и еще раз спасибо за ответ, сэр,