看板 MacDev 關於我們 聯絡資訊
似乎是因為我的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
Blueshiva:只要key的長度、選的方法是一樣的,結果就會一致 07/12 12:47
govert:請上NIST對應TDES的Known Anwser Test. 07/12 13:57
govert:如果結果不一樣, 大概是endian或是padding的問題. 07/12 13:57
dm33:感謝 已解決!! 07/12 15:29