作者dm33 ()
看板MacDev
標題[問題] 關於3des加解密問題
時間Tue Jul 10 15:18:03 2012
有點鬱悶,改了一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:推 aecho:iv是nil的情形下,會被設成什麼值呢?會每次都不一樣嗎? 07/10 20:58
2F:→ aecho:加解密key和iv要一致。 07/10 20:59
3F:→ dm33:因為ECB好像不用給vector 我剛試過加上固定值vector還是一樣 07/11 09:56
4F:→ dm33:key是確定都一樣的~ 07/11 09:58
5F:推 aecho:那我就真的猜不出原因是什麼了 XDD 等你解掉後再聽你分享吧 07/13 07:45
6F:→ dm33:應該是因為key只給了16byte(這是廠商給的),3des要24byte 07/13 09:59
7F:→ dm33:所以可能不足的就被亂填充了 造成我的結果有時候對有時候錯 07/13 10:00