逆向碰到3des分析
1.ios 某个app碰到涉及3des的解密函数。
2.底层调用的库函数。
3.对比CCCrypt的头文件
CCCryptorStatus CCCrypt( CCOperation op, /* kCCEncrypt, etc. */ CCAlgorithm alg, /* kCCAlgorithmAES128, etc. */ CCOptions options, /* kCCOptionPKCS7Padding, etc. */ const void *key, size_t keyLength, const void *iv, /* optional initialization vector */ const void *dataIn, /* optional per op and alg */ size_t dataInLength, void *dataOut, /* data RETURNED here */ size_t dataOutAvailable, size_t *dataOutMoved);
参数2是对应的算法,当2时对应枚举的值为kCCAlgorithm3DES。
enum { kCCAlgorithmAES128 = 0, kCCAlgorithmDES, kCCAlgorithm3DES, kCCAlgorithmCAST, kCCAlgorithmRC4, kCCAlgorithmRC2 };
4.按照固定key以及向量填充后进行解密。发现秘钥只有23位,进行解密失败,CCCrypt为24位,进行补0操作后解密成功。