hsm - 客户选择的 PIN 的 HSM PIN 命令
问题描述
我正在尝试构建一个卡密码解决方案,让客户能够登录到门户网站并设置自己的卡密码,然后生成新密码的 PVV 值。
我尝试使用的命令列表是
- JG\JH(翻译密码)
- DG\DH(生成 PVV)
JG\JH 命令需要 LMK 下的 PIN,这意味着我需要先对客户 PIN 执行 BA\BB 命令,然后才能继续。为此,HSM 必须处于授权状态。
有没有不同的方法来实现这一点?
解决方案
好吧,正确的方法是以与在 ATM 终端上类似的方式进行操作。
1.创建一个清晰的PIN块
For ex. PIN = 1234 PAN = 400000000000002 Block 1 [0+Pin Length+Filler to make it 16]: 0+ 4+1234+FFFFFFFFFF = 41234FFFFFFFFFF Block 2 [0000 + PAN(12, exclude first 3 and last check digit)]: 0000 + 000000000000 = 0000000000000000 Clear PIN Block = XOR(Block 1 , Block 2)
2. 在 ZPK 下加密(应用 3DES)清除 PIN 块。
如果您使用的是 java,请尝试 javax.crypto.Cipher。
3.在命令“FW”中使用加密的PIN Block生成PVV
- 命令代码 (FW)
- PIN 加密密钥类型(ZPK 为 001)
- PIN 加密密钥 (ZPK)
- PIN 验证密钥
- 密码块
- PIN 块格式代码
- PAN/帐户(12)
- PVKI
推荐阅读
- jquery - JQuery 如何使用 kendo ui 网格获取 this.textbox val
- conda - Conda biopython 环境
- automation - 线程转储/堆转储分析自动化
- laravel - Eloquent - 默认情况下在所有模型中添加自定义字段,如时间戳,并记录用户数据
- python - 如何在一个表达式中将一个 df 中的值附加到第二个列的底部?
- javascript - 哪个 jQuery 2.xx 版本可以安全地与 jQueryUI 1.12 一起使用?
- c# - 如何对按另一个字段分组的列表进行排序
- python - 多个信号的上升沿和下降沿 - PYTHON
- ios - 如何正确打包混合 C/Swift 库并将其作为模块包含在 Xcode 项目中?
- python - python请求中的http代理?