作者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