CPU卡电子钱包圈存与消费(三)

三、 消费

1、选择3F01目录

Send Data : 00 A4 00 00 02 3F 01

RSP[88]: 6F 54 84 09 A0 00 00 00 03 86 98 07 01 A5 47 9F 08 01 02 9F 0C 40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 90 00

2、取8字节随机数

Send Data :0084000008

RSP[10]: 9B 36 1B 26 CB 9F A8 C8 90 00

3、对随机数进行3DES加密

加密数据:9B 36 1B 26 CB 9F A8 C8

加密密钥:39393939393939393939393939393939(3F01目录外部认证密钥)

处理结果:97 F5 57 D8 ED E9 7F 95

4、外部认证

Send Data :008200000897F557D8EDE97F95

RSP[2]:9000

5、读余额

Send Data :805C000204

RSP[6]: 00 00 12 34 90 00

6、消费初始化

805001020B0000000002000000000001

RSP[17]: 00 00 12 34 00 00 00 00 00 00 01 2A B5 07 51 90 00

电子存折或电子钱包旧余额:00001234

电子存折或电子钱包脱机交易序号:0000

透支限额:000000

密钥版本号:00

算法标识:01

随机数:2A B5 07 51

计算过程密钥

过程密钥由DATA中第一字节即密钥标识符指定的消费密钥对(4字节随机数+2字节电子存折或电子钱包脱机交易序号+终端交易序号的最右两字节)3DES数据加密生成

终端交易序号在消费命令中指定,可以设置位00000000

密钥: 3E013E013E013E013E013E013E013E01
数据:2A B5 07 51 00 00 00 00
加密结果:3A A4 9C 8C D5 B4 45 75

计算消费命令中的MAC1

MAC1由过程密钥对(4字节交易金额+1字节交易类型标识+6字节终端机编号+4字节终端交易日期+3字节终端交易时间)DES数据加密生成

交易金额:00000002

交易类型标识:

05-电子存折消费

06-电子钱包消费

终端机编号:000000000001

交易日期20180807

交易时间163500

clip_image002

得到MAC1 : 677E4922

7、消费

805401000F0000000020180807163500677E4922

RSP[10]: 78 5C 74 07 6B 7F 5B EC 90 00

交易验证码TAC: 78 5C 74 07

MAC2: 6B 7F 5B EC

校验MAC2

MAC2由过程密钥对4字节交易金额DES数据加密生成

clip_image004

加密结果见上图,校验成功。

校验TAC

TAC码由TAC密钥左右8字节异或运算的结果对(4字节交易金额+1字节交易类型标识+6字节终端机编号+4字节终端交易序号+4字节主机交易日期+3字节主机交易时间)DES数据加密生成

内部密钥为:34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34

TacKey.Left(8) = 3434343434343434

TacKey.Right(8) = 3434343434343434

XOR 结果 = 0000000000000000

交易金额:00000002

交易类型:06

终端机编号:000000000001

终端交易序号:00000000

交易日期:20180807

交易时间:163500

clip_image006

加密结果见上图,校验成功。

8、读余额

805C000204

RSP[6]: 00 00 12 34 90 00

RSP[6]: 00 00 12 32 90 00

扣费成功

扣费不需要验证PIN码。

© 版权声明
THE END
喜欢就支持以下吧
点赞0
分享
评论 抢沙发