我的任务是解密从加密读卡器获取的密文。读卡器采用 DUKPT(每次交易派生唯一密钥)方案和 3DES 加密。我对 3DES 加密没有问题,因为它是由 BouncyCastle 和 Java JCE 等知名库实现的通用算法。
在这项任务之前,我根本没有遇到过 DUKPT,所以我完全是新手。
从我目前所读到的内容来看,DUKPT 使用了一种基于基本派生密钥 (BDK) 的密钥派生机制,该密钥派生密钥基本上是特定交易的共享密钥和密钥序列号。在读卡器的情况下,每次我刷卡(即使是同一张卡),密文都会不同,KSN也会不同。知道了 BDK、KSN、加密算法(在这种情况下是 3DES)和密文,我如何根据这些信息推导出交易的密钥?我想有某种密钥派生功能对吗?