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、校验pin码

Send Data : 00 20 00 00 03 12 34 56
Recv Data : 90 00

6、读余额

Send Data : 80 5C 00 02 04

RSP[6]: 00 00 00 00 90 00

7、初始化圈存

Send Data : 80 50 00 02 0B 0000001234000000000001

RSP[18]: 00 00 00 00 00 00 00 01 F9 CA BA 91 6C 39 4D 64 90 00

电子存折或电子钱包旧余额 00000000

电子存折或电子钱包联机交易序号0000 (注意交易序号每次会变化)

密钥版本号:00

算法标识:01

伪随机数:F9 CA BA 91

MAC1: 6C 39 4D 64

算法标识

00-3DES

01-DES

02-255保留

计算过程密钥

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

密钥: 3F013F013F013F013F013F013F013F01
数据:F9 CA BA 91 00 00 80 00
加密结果:03 01 5B EA 34 7E A2 31

计算MAC1

MAC1由过程密钥对(4字节电子存折或电子钱包旧余额+4字节交易金额+1字节交易类型+6字节终端机编号)DES数据加密生成

交易类型:

旧余额:00000000

交易金额:00001234

交易类型:

01-电子存折圈存

02-电子钱包圈存

终端机编号:000000000001

KEY: 03 01 5B EA 34 7E A2 31

INITDATA: 0000000000000000

DATA: 000000000000123402000000000001

clip_image002

MAC的高4位和卡片返回的MAC1相等,证明命令执行正确

计算圈存命令中的MAC2

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

交易金额:00001234

交易类型:02

终端机编号:000000000001

交易日期:20180805

交易时间:164522

密钥:03 01 5B EA 34 7E A2 31

初始向量: 0000000000000000

数据 : 000012340200000000000120180805164522

取前4个字节:

MAC2 = 7F4F6613

clip_image004

7、圈存

Send Data : 80 52 00 00 0B 201808051645227F4F6613

RSP[6]: F7 C1 CC 20 90 00

返回的交易验证TAC码:

F7 C1 CC 20

验证TAC码

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

新余额:00001234

交易序号:0000

交易金额:00001234

交易类型标识:02

终端机编号:000000000001

交易日期:20180805

交易时间:164522

内部密钥为: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

密钥: 0000000000000000

初始向量: 0000000000000000

数据: 000012340000000012340200000000000120180805164522

clip_image006

计算结果MAC高4字节与卡片返回的TAC相同,圈存成功

8、读余额

Send Data : 80 5C 00 02 04

RSP[6]: 00 00 12 34 90 00

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