作者dm33 ()
看板MacDev
标题Re: [问题] 关於3des加解密问题
时间Thu Jul 12 11:59:43 2012
似乎是因为我的key值的长度问题,已解决
再问个问题,是不是objective-c与.net c#所产生的3des-ecb结果是不一致的?
※ 引述《dm33 ()》之铭言:
: 有点郁闷,改了一3des-ecb加解密,结果加解密每次执行结果会不一样
: 有时候加解密就对了,有时候就错了,
: 是原本就为如此,还是我哪儿有问题呢,有谁知道吗?
: 以下程式码....
: +(NSData *) TriDesEncode:(NSData*)data key:(NSData*)key
: encryptOrDecrypt:(CCOperation)encryptOrDecrypt
: {
: NSLog(@"Data:%@",data);
: NSLog(@"key:%@",key);
: const void *vplainText = [data bytes];
: size_t plainTextBufferSize = [data length];
: vplainText = (const void *) [data bytes];
: CCCryptorStatus ccStatus;
: uint8_t *bufferPtr = NULL;
: size_t bufferPtrSize = 0;
: size_t movedBytes = 0;
: bufferPtrSize = (plainTextBufferSize + kCCBlockSize3DES) &
: ~(kCCBlockSize3DES - 1);
: bufferPtr = malloc( bufferPtrSize * sizeof(uint8_t));
: memset((void *)bufferPtr, 0x0, bufferPtrSize);
: const void *vkey = (const void *) [key bytes];
: ccStatus = CCCrypt(encryptOrDecrypt,
: kCCAlgorithm3DES,
: kCCOptionECBMode,
: vkey, //"123456789012345678901234", //key
: kCCKeySize3DES,
: nil, //"init Vec", //iv,
: vplainText, //"Your Name", //plainText,
: plainTextBufferSize,
: (void *)bufferPtr,
: bufferPtrSize,
: &movedBytes);
: NSData *result = [NSData dataWithBytes:(const void *)bufferPtr
: length:(NSUInteger)movedBytes];
: return result;
: }
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 42.67.175.14
1F:推 Blueshiva:只要key的长度、选的方法是一样的,结果就会一致 07/12 12:47
2F:推 govert:请上NIST对应TDES的Known Anwser Test. 07/12 13:57
3F:→ govert:如果结果不一样, 大概是endian或是padding的问题. 07/12 13:57
5F:→ dm33:感谢 已解决!! 07/12 15:29