Ios 目标c的DES解密问题
我必须解密目标C中的数据。解密方案为DES/ECB/NOPANDING,输入数据=741DCDDF1C216EEF,密钥=D9C44F6D2589255E,输出应为34160D6EADAD6D86,以下代码为aec6f702 5b4619e1 064db829 925a10d7 我将输入传递为Ios 目标c的DES解密问题,ios,objective-c,encryption,des,Ios,Objective C,Encryption,Des,我必须解密目标C中的数据。解密方案为DES/ECB/NOPANDING,输入数据=741DCDDF1C216EEF,密钥=D9C44F6D2589255E,输出应为34160D6EADAD6D86,以下代码为aec6f702 5b4619e1 064db829 925a10d7 我将输入传递为 uint8_t ksn10[16] = { 0x0D, 0x09, 0x0C, 0x04, 0x04, 0x0F, 0x06, 0x0D, 0x02, 0x05, 0x08, 0x09, 0x02
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
{
}
但是我没有得到正确的输出。请帮助我获取34160D6EADAD6D86作为输出,并让我知道此代码中的错误。将数据和密钥更改为正确的十六进制表示形式,解密将生成正确的值:
input data: 741DCDDF1C216EEF
key: D9C44F6D2589255E
output: 34160D6EADAD6D86
测试(无错误检查,假设所有输入正确):
您的代码使用的是0D090C04040F060D0205070905050E,而不是D9C44F6D2589255E。我猜这就是问题之一?你的猜测是对的谢谢你现在我找到了解决方案两天多没有找到解决方案但是你做到了非常感谢你及时的帮助
input data: 741DCDDF1C216EEF
key: D9C44F6D2589255E
output: 34160D6EADAD6D86
uint8_t dataInBytes[8] = { 0x74, 0x1D, 0xCD, 0xDF, 0x1C, 0x21, 0x6E, 0xEF };
int dataLength = 8;
uint8_t keyBytes[8] = { 0xD9, 0xC4, 0x4F, 0x6D, 0x25, 0x89, 0x25, 0x5E };
uint8_t *dataOutBytes = calloc(1, dataLength);
CCCrypt(kCCDecrypt,
kCCAlgorithmDES, kCCOptionECBMode,
keyBytes, kCCKeySizeDES,
NULL,
dataInBytes, dataLength,
dataOutBytes, dataLength,
NULL);
NSString *s = @"dataOutBytes: ";
for (int i=0; i<8; i++) {s = [s stringByAppendingFormat:@"%02X", dataOutBytes[i]];}
NSLog(@"%@", s);
dataOutBytes: 34160D6EADAD6D86