我是这个论坛的新手。最近,我的任务是解密使用AES加密加密的文件(它也需要加密和解密的密钥)。文件用于使用DUKPT每5分钟加密一次。
我正在研究c#。在Google上搜索,如果你有DUKPT,我已经找到了解密文件的方法。但我不知道如何使用密钥序列号(KSN)和基本派生密钥(BDK)生成DUKPT。 c#中是否有任何库支持我们可以生成DUKPT ..
希望在这里有很大的帮助
DUKPT:每笔交易派生的唯一密钥
答案 0 :(得分:1)
https://github.com/sgbj/Dukpt.NET - 精彩的介绍。您需要使用规范来理解代码,因为它的编写时考虑到了简洁,而不是可读性。我在6个月前使用它不仅要了解DUKPT,还要为生物识别传感器设备实现嵌入式C库。
答案 1 :(得分:0)
有一个ANSI标准定义了DUKPT,X9.24-1但是它既使用DES进行加密/解密又生成密钥。既然你说BDK和KSN,我想这就是你的想法。我希望你没有得到任何回复(即使在延长四个小时之后),因为你在同一篇文章中说过AES和DUKPT。 (知情人士阅读并说,RTFM。)
这不是C#,但我相信有一个DUKPT.m文件,“Mikhail Burshteyn”指向Stack Exchange或过去六个月左右的某个地方。我写的C中还有一些代码用于说明如何解密。 (标准中没有涵盖的东西值得一试。)
如果您想要C#中的源代码可以剪切和粘贴,我想您会感到失望。
答案 2 :(得分:0)
如上一则ANSI标准中以3DES模式定义DUKPT,X9.24-1所述,这意味着Dukpt使用3DES算法生成密钥(而不是加密或解密数据),被称为3DES-DUKPT。类型是AES-DUKPT,它使用AES-ECB模式生成密钥。 两者都具有不同大小的公共输入基派生密钥(BDK)和KSN。 对于3DES-DUKPT,BDK =总是16个字节,而KSN = 10个字节。 对于AES-DUKPT,BDK = 16、24、32字节(取决于AES密钥大小),KSN = 12字节。
输入KSN由Key_serial_number和Counter组成。
输入BDK和Key_serial_number(来自KSN)生成IPEK。 IPEK与Counter(来自KSN)一起为数据生成加密/解密密钥。