我已经将这个函数用于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在第一个null终止时,变量不能包含整个数据。但我必须在服务器上发送加密的字符串。如何将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 ( null终止)结束,因为我们必须发送加密的NSString.so,这造成了问题。我无法发送base64string,因为服务器端不希望that.they请求加密字符串。
所以我现在要做的是,再次感谢您的回复,先生,
发布于 2012-12-05 20:54:09
将NSData转换为NSString并不会以空字节停止。NSString可以包含任意Unicode字符,包括嵌入的"NULL“字符。
示例:
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);输出:
Hello因此,看起来字符串只包含5个字符,转换在第一个空字节处停止。但这只是NSLog输出,实际上没有丢失什么:
for (int i = 0; i < [str length]; i++) {
unichar c = [str characterAtIndex:i];
NSLog(@"%2d, %3d, %c", i, c, c);
}输出:
0, 72, H
1, 101, e
2, 108, l
3, 108, l
4, 111, o
5, 0,
6, 87, W
7, 111, o
8, 114, r
9, 108, l
10, 100, d
11, 0, 因此,字符串包含所有数据,没有丢失任何数据。当您将字符串发送到服务器时,该字符串可能稍后会被截断。
备注:将加密的数据转换为字符串对我来说是个问题,因为数据是用某种字符编码来解释的。在本例中,我选择了NSASCIIStringEncoding,但根据文档,这种编码只对…值0有效。127.
如果您添加了更多关于加密数据如何以及以何种格式发送到服务器的信息,我们可能会建议如何更好地解决这一问题。
https://stackoverflow.com/questions/13717571
复制相似问题