问题标签 [dukpt]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - 3DES和DUKPT的Java实现,用于通过键盘仿真解密信用卡读卡器数据?
我们有一个在线键入界面,并且支持信用卡刷卡功能。在当今的行业中,读卡器应该在将信息编码为 ASCII 之前对其进行加密,然后由服务器端进行解密。(所以本地机器永远看不到卡信息)
我在键盘仿真模式下使用 MagTek 读卡器,并为测试目的注入了 ANSI 标准键。一旦解码和解密成功,我们将在 MagTek 注册我们自己的密钥并订购一些生产使用的阅读器。
我知道这种解密之前已经用 C# 和其他语言实现过,但需要 Java 中的一些东西,或者可能是 Java webapp 中可以包含的其他一些 CLI 可访问的程序。我将继续将一些 C# 代码移植到 Java,但首先需要设置 C# 环境。(我以前从未这样做过。)
一旦我确保 C# 版本运行良好,我就知道我可以使用我常用的调试技术消除移植过程中的任何错误。
在我完成所有这些之前,如果有更简单的方法,请告诉我。我认为这已经在 Java 中完成了,但也许不是......
encryption - MSR DUKPT 的 MAC 变体?
目前我正在研究 ChipCard EMV 设备解密。下面是我使用交易后的相关数据(TLV格式作为标签长度值):
我知道这个设备的 BDK 是0123456789ABCDEFFEDCBA9876543210
. 根据解密指令,它提到 DFDF59 包含以下标签:
每条指令都提到了“ MSR DUKPT 的 MAC 变体”,其中 MAC 代表消息验证码,以及“通过 TLV 格式解析数据。对于加密的数据标签,使用 TDES_Decrypt_CBC 对其进行解密”。
我尝试通过 KSN、BDK 和加密数据 DFDF59 使用 3DES DUKPT。它行不通。解密领域的任何人都可以给我一些建议吗?我们的供应商非常不愿意分享他们的知识......
我不知道 MAC 如何在解密中真正发挥作用....我认为 MAC 只是一个完整性检查....我正在使用从 KSN 和 BDK 生成的 3DES DUKPT 会话密钥。这适用于该设备中的其他解密,但不能解决 DFDF59(芯片卡 EMV 解密)......这就是为什么我开始怀疑我是否使用了正确的会话密钥......随意只是把想法扔在那里。谢谢!
encryption - 3DES-DUKPT (CBC) 解密确认
我有Key Serial Number (KSN)
,Base Derivation Key (BDK)
和 加密字符串。
加密字符串
来自设备制造商菜单的解密应该是:
正确答案
我的解密结果是:
和会话密钥原来是:
任何解密专家都可以运行一点 3DES-DUKPT 并帮我检查吗?
设备制造商的说明声称3DES-DUKPT is formed, using Data Skye variant and (KSN)" for the encrypted value.
谢谢你!
encryption - 3DES-DUKPT CBC 和 3DES-DUKPT CBC-MAC 的区别
有谁知道区别?我正在为我们的一个供应商 EMV 机器解密芯片卡代码。该算法称为3DES0DUKPT CBC-MAC?
我之前已经成功完成了 3DES-DUKPT CBC.... 解密过程中 CBC-MAC 与 CBC 有何不同?我以为MAC只是解密后的完整性检查.....谢谢!
encryption - Triple-DES DUKPT CBC PIN 变体与数据变体
有人知道带有 PIN 变体和数据变体的三重 des dukpt 解密算法之间的区别吗?
我已经完成了 Triple DESK DUKPT PIN 变体,它从KSN和BDK生成会话密钥。然后使用会话密钥解密消息。
数据变体怎么样?它与 PIn 变体有何不同?谢谢
swipe - 如何在 Java 中解码 DUKPT CBC 模式?
我无法解码 DUKPT 刷卡数据,我正在尝试使用不同的示例,但信用卡信息已被编码。
encryption - 根据 ANSI X9.24 第 1 部分标准解密 3DES DUKPT
我有一个 Magtek uDynamo 并且正在尝试解密轨道 1。我已阅读以下内容并了解一点,但不知道如何实际解密数据。供应商说要使用 ANSI 测试密钥来解密,但我找不到任何东西。我有 KSN、会话和序列号。我也尝试了一些我发现的 Java 代码,但它似乎不起作用。它返回 null 或者我可能输入了错误的 BDK。我只是使用我在某处读到的序列号。我在安卓上做这个。最好我想要在服务器上而不是在设备上运行的代码,以便它与 HTTPS 一起通过线路加密。
https://github.com/yinheli/dukpt/blob/master/src/main/java/com/yinheli/tool/DukptDecrypt.java
更新 我希望根据 ANSI X9.24 第 1 部分标准解密 3DES DUKPT
我正在使用这个https://github.com/camcima/dukpt-php/tree/e8fceb4df8757e7e097c435221b4e93e097d3c9f
我必须更新文件并确保我获得了最新的 phpseclib 并且它可以运行,但数据的输出类似于 C���������4A�fr���(Wb������f� 7z�n:�w�9��,��f7�,m=z�CRW�</p>
我肯定错过了什么。我尝试了不同的模式,并且正在尝试寻找编码。如果您有解决方案或想法,请告诉我。他们的测试数据也有效,所以我不确定我的和他们的有什么区别
我在根目录中运行 index.php 的代码:
java - 使用java通过3DES-128位CBC模式(填充零)解密数据
在解密加密数据的过程中,我遇到了一些挑战。如果有人能帮助我度过难关,我会很高兴。
虽然,我已经研究了执行此操作的算法,因为我要从一个设备中获取我的数据,该设备已经有它的基本派生密钥(BDK)、初始加载的密钥序列号和初始加载的密码输入设备密钥。
在给出的文档中,我们有Initially loaded key serial number、数据加密密钥变体和track 2 Data(以明文形式)。
在这个例子中,我知道他们实际上使用了 3DES-128 位 CBC 模式(填充零)方法。
我现在的问题是,明文是如何从加密数据中获得的。如果有人可以让我通过(说明用于解密此数据的流程或算法),我会很高兴。
会非常感谢你的时间。
encryption - PIN 加密密钥变体和数据加密密钥变体之间的区别
在解密数据的过程中,我混淆了这两个定义。我真的很感激能更好地理解这两种不同的描述。
已经搜索谷歌,看看我是否能得到更多的理解,但仍然对我得到的那些感到困惑。
非常感谢您的宝贵时间。
encryption - 我在哪里可以获得用于 DUKPT 解密的 BDK
我在 Thales HSM 中为 DUKPT 生成了一个 BDK Type3 密钥。我已将这个在HSM的LMK下加密的BDK发送给终端制造商以生成IPEK密钥并将其注入终端。
当我收到加密数据时,我有 KSN,现在我需要再次使用 BDK 来解密它。我没有将 BDK 存储在我的主机应用程序中的任何位置。我怎样才能再次获取 BDK 进行解密。它是否存储在 HSM 中的某个位置.如果有多个 BDK,我如何找到用于此特定终端的正确的一个?