この関数を 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 には多くの null 終端が含まれているため、 NSString は最初の null 終端で終了するため、変数にデータ全体を含めることができません。しかし、サーバーで暗号化された文字列を送信する必要があります。NSData を NSString に変換するにはどうすればよいですか。すべてのデータを含む文字列は意味しますか (データに 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);
NSString *sendtoserver=[NSString stringwithformat:@"<request>%@</request>",str];
これらの NSData を NSString に変換するとき。暗号化された NSString を送信する必要があるため、最初の \0 ( null 終了) で終了します。そのため、問題が発生しています。サーバー側がそれを望んでいないため、base64stringを送信できません。彼らは文字列の暗号化を求めていました。
だから私が今何をしているのか、助けてください、そして返信してくれてありがとう。