我已将此功能用于 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。所以它会出现问题。而且我无法发送base64string,因为服务器端不想要那个。他们要求加密字符串。
所以我现在做什么,请帮助并再次感谢您的回复先生,