我正在尝试构建一个卡pin解决方案,通过该解决方案,客户可以登录到门户网站并设置自己的卡pin,然后生成新pin的PVV值。
我尝试使用的命令列表是
- JG\JH(翻译PIN(
- 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块生成PVV
- 命令代码(FW(
- PIN加密密钥类型(ZPK为001(
- PIN加密密钥(ZPK(
- PIN验证密钥
- PIN块
- PIN块格式代码
- PAN/账户(12(
- PVKI