三、 消费
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
得到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数据加密生成
加密结果见上图,校验成功。
校验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
加密结果见上图,校验成功。
8、读余额
805C000204
RSP[6]: 00 00 12 34 90 00
RSP[6]: 00 00 12 32 90 00
扣费成功
扣费不需要验证PIN码。
