我是这个论坛的新手。最近,我的任务是解密一个使用 AES 加密(也需要一个密钥来加密和解密)加密的文件。文件使用 DUKPT 每 5 分钟加密一次。
我正在研究 c#。通过在谷歌上搜索,如果你有 DUKPT,我发现了如何解密文件。但我不知道如何使用密钥序列号(KSN)和基本派生密钥(BDK)生成 DUKPT。c# 中是否有任何库支持,我们可以通过它生成 DUKPT ..
希望在这里有很大的帮助
DUKPT:每笔交易派生的唯一密钥
我是这个论坛的新手。最近,我的任务是解密一个使用 AES 加密(也需要一个密钥来加密和解密)加密的文件。文件使用 DUKPT 每 5 分钟加密一次。
我正在研究 c#。通过在谷歌上搜索,如果你有 DUKPT,我发现了如何解密文件。但我不知道如何使用密钥序列号(KSN)和基本派生密钥(BDK)生成 DUKPT。c# 中是否有任何库支持,我们可以通过它生成 DUKPT ..
希望在这里有很大的帮助
DUKPT:每笔交易派生的唯一密钥
https://github.com/sgbj/Dukpt.NET - 很棒的介绍。您需要规范来理解代码,因为它的编写考虑到了巧妙的简洁性,而不是可读性。6 个月前,我使用它不仅学习了 DUKPT,而且还实现了用于生物识别传感器设备的嵌入式 C 库。
正如上一篇文章中提到的定义 DUKPT 的 ANSI 标准,X9.24-1 在 3DES 模式下,这意味着 Dukpt 使用 3DES 算法生成密钥(不加密或解密数据),它被称为 3DES-DUKPT。另一种类型是 AES -DUKPT,使用 AES-ECB 模式生成密钥。两者都有共同的输入 Base derivation Key (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(来自 KSN)为数据生成加密/解密密钥。
有一个定义 DUKPT、X9.24-1 的 ANSI 标准,但它使用 DES 进行加密/解密和生成密钥。既然你说 BDK 和 KSN,我想这就是你的想法。我希望您没有收到任何回复(即使在延长了四个小时之后),因为您在同一个帖子中说 AES 和 DUKPT。(知情人士读到,并说,RTFM。)
它不是 C#,但我相信“Mikhail Burshteyn”在 Stack Exchange 或过去六个月左右的某个地方指出了一个 DUKPT.m 文件。我还写了一段 C 代码来说明如何解密。(标准中没有涵盖的东西值得一提。)
如果您想要可以剪切和粘贴的 C# 源代码,我想您会失望的。