【发布时间】:2014-08-04 22:38:04
【问题描述】:
我必须解密目标 C 中的数据。解密方案是 DES/ECB/NoPadding,输入数据 = 741DCDDF1C216EEF,密钥 = D9C44F6D2589255E,输出应为 34160D6EADAD6D86,以下代码输出为 aec6f702 5b4619e1 064db829 925a10d7
我将输入作为
uint8_t ksn10[16] = { 0x0D, 0x09, 0x0C, 0x04, 0x04, 0x0F, 0x06, 0x0D,
0x02, 0x05, 0x08, 0x09, 0x02, 0x05, 0x05, 0x0E};
uint8_t bytes32[16] = { 0x07, 0x04, 0x01, 0x0D, 0x0C, 0x0D, 0x0D, 0x0F,
0x01, 0x0C, 0x02, 0x01, 0x06, 0x0E, 0x0E, 0x0F};
NSData *TMKKey = [NSData dataWithBytes:ksn10 length:16];
NSData *SessionKey = [NSData dataWithBytes:bytes32 length:16];
方法定义:
NSData *encoded_data= [self DESCrypto:(NSData*)TMKKey:(NSData*)SessionKey:kCCDecrypt: [SessionKey length]:kCCAlgorithmDES:kCCKeySizeDES:kCCOptionECBMode|0x0000];
NSLog(@"%@", encoded_data);
方法调用:
-(NSData*)DESCrypto :(NSData *)key :(NSData*)dataIn :(CCOperation)CryptOperation :(int)inlength :(CCAlgorithm)type :(size_t)keysize :(CCOptions)mode
{
char dataOut[16000];
bzero(dataOut, sizeof(dataOut));
size_t numBytesEncryptedorDecrypted=0;
char iv[8]={0};
CCCryptorStatus result =CCCrypt(CryptOperation,type,mode,[key bytes],keysize,iv,[dataIn bytes],inlength, dataOut, sizeof(dataOut), &numBytesEncryptedorDecrypted);
NSLog(@"CryptoStatus:%d",result);
NSData *data=[[NSData alloc]initWithBytes:dataOut length:numBytesEncryptedorDecrypted];
return data;
}
但没有得到正确的输出。请帮我得到 34160D6EADAD6D86 作为输出,让我知道这段代码有什么问题。
【问题讨论】:
-
您的代码使用的是 0D090C04040F060D020507090205050E 而不是 D9C44F6D2589255E。我猜这是问题之一?
-
你的猜测是正确的谢谢你..现在我得到了解决方案
标签: ios objective-c encryption des