我需要一些關於此3DES解密的幫助。我已經創建了一些解密代碼,但我不能讓它按照原樣工作。這是我第一次使用加密技術,我不知道我到底在做什麼。ios 3DES加密/解密CBC
我收到服務器解密的密鑰(這是密鑰的示例值:0F7BC98767FF9A01F2B2AD1CD644AD33 - 它是隨機生成的字節的十六進制表示)。
這是我使用來解密該消息的方法:
-(NSString*)doCipher:(NSString*)message key:(NSString*)key operation:(CCOperation)encryptOrDecrypt {
const void *messageData;
size_t messageBufferSize;
if (encryptOrDecrypt == kCCDecrypt){
NSData *messageEncryptData= [NSData dataWithBase64EncodedString:message];
messageBufferSize= [messageEncryptData length];
messageData= [messageEncryptData bytes];
}
else{
messageBufferSize= message.length;
messageData = [[[message dataUsingEncoding: NSUTF8StringEncoding]mutableCopy] bytes];
}
CCCryptorStatus ccStatus;
uint8_t *bufferPtr = NULL;
size_t bufferPtrSize = 0;
size_t movedBytes = 0;
bufferPtrSize = (messageBufferSize + kCCBlockSize3DES) & ~(kCCBlockSize3DES - 1);
bufferPtr = malloc(bufferPtrSize * sizeof(uint8_t));
memset((void *)bufferPtr, 0x0, bufferPtrSize);
uint8_t iv[kCCBlockSize3DES];
memset((void *) iv, 0x0, (size_t) sizeof(iv));
NSData *keyData = [[key dataUsingEncoding:NSUTF8StringEncoding]mutableCopy];
ccStatus = CCCrypt(encryptOrDecrypt,
kCCAlgorithm3DES,
kCCOptionPKCS7Padding & kCCModeCBC,
(const void *)[keyData bytes],
kCCKeySize3DES,
iv,
messageData,
messageBufferSize,
(void *)bufferPtr,
bufferPtrSize,
&movedBytes);
if (ccStatus == kCCParamError) return @"PARAM ERROR";
else if (ccStatus == kCCBufferTooSmall) return @"BUFFER TOO SMALL";
else if (ccStatus == kCCMemoryFailure) return @"MEMORY FAILURE";
else if (ccStatus == kCCAlignmentError) return @"ALIGNMENT";
else if (ccStatus == kCCDecodeError) return @"DECODE ERROR";
else if (ccStatus == kCCUnimplemented) return @"UNIMPLEMENTED";
NSLog(@"bufferPtr: %s", bufferPtr);
NSString *s = [[NSString alloc] initWithFormat:@"%s", bufferPtr];
return s;
}
- EDIT --- 這是我從該方法得到的輸出:
bufferPtr:A」ÕÏÁU
--- EDIT 2 ----- 我固定密鑰長度爲24字節長,但現在的最終結果是空字符串
是否有一個選項'kCCKeySize2DES'?您的密鑰大小爲16個字節。否則,將前8個字節複製到密鑰並將它們連接到密鑰的末尾,以便爲您的2DES ABA密鑰創建了等效的24字節3DES ABC密鑰。 – 2014-12-04 16:01:26
你好?這是否工作?我在這裏沒有IOS運行時間... – 2014-12-04 19:51:54
我們修復了密鑰長度,但是我仍然遇到問題 – tester777 2014-12-05 08:23:09