Re: [問題] 關於3des加解密問題

看板MacDev作者時間12年前 (2012/07/12 11:59), 編輯推噓2(203)
留言5則, 3人參與, 最新討論串2/2 (看更多)
似乎是因為我的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

07/12 12:47, , 1F
只要key的長度、選的方法是一樣的,結果就會一致
07/12 12:47, 1F

07/12 13:57, , 2F
請上NIST對應TDES的Known Anwser Test.
07/12 13:57, 2F

07/12 13:57, , 3F
如果結果不一樣, 大概是endian或是padding的問題.
07/12 13:57, 3F

07/12 15:29, , 5F
感謝 已解決!!
07/12 15:29, 5F
文章代碼(AID): #1F_aknxy (MacDev)
文章代碼(AID): #1F_aknxy (MacDev)