以下这篇文章并非原著,文档传到我这里,我已经不知道出处了,感谢作者。
TC、ARQC、AAC及ARPC校验方式
前提:
1. 获得IC卡AC子密钥,或者获得发卡行AC主密钥
本例:
MDKAC = C4D689158AD9FB9D23105B91CE046D0E
2. 得到IC卡卡号及卡序列号
本例:
PAN = 6210220110002707355
PAN ser = 01
1.TC、ARQC及AAC的计算方式
取IC卡AC子密钥
如果已经获得了IC卡AC子密钥则略过此步。
用发卡行主密钥分散出IC卡AC子密钥。
方法为使用发卡行主密钥,对PAN的后14位(如果PAN不足14位前面补0)加PAN序列号(共8B)并对此取反连接得到的16字节数据,做3DES加密就得到IC卡AC子密钥。
如:
用MDKAC对2011000270735501DFEEFFFD8F8CAAFE 做3DES加密得 B8A15DA5F7043C317D9FD8F8DFE2BD75(UDK)
得过程密钥
用IC卡AC子密钥,对交易计数器ATC做3DES加密:
1. 在ATC前补6字节0x00,对ATC取反,并在前补6字节0x00,并连接
如:
ATC = 03D3
00000000000003D3000000000000FC2C
2. 用IC卡AC子密钥对如上数据做3DES加密得过程密钥:
如:
用UDK对00000000000003D3000000000000FC2C做3DES加密得4A43440B2D932ACDC4E2776ED562EE43 (过程密钥)
校验AAC、TC及ARQC
IC卡返回的55域数据为:
待校验的密文: 81 A9 DC 93 10 F888 56
授权金额: 000000000000 9F0206
其它金额: 000000000000 9F0306
国家代码: 0156 9F1A02
终端验证: 0000000000 9505
货币代码: 0156 5F2A02
交易日期: 000000 9A03
交易类型: 00 9C01
随机数: 00000444 9F3704
AIP: 7C00 8202
ATC: 03D3 9F3602
CVR: 0380A800 9F1013
连接如上数据得:
00000000000000000000000001560000000000015600000000000004447C0003D30380A800
用过程密钥对如上数据做MAC运算得到了AAC、TC或ARQC:
AAC、TC或ARQC = 81A9DC9310F88856
与IC返回的密文比较 相等,校验成功!
2.ARPC的计算方式
取授权应答码
授权应答码为服务器返回的两字节数据,本例采用“00”
ARC = 0x300x30
ARPC计算过程
1. 在ARC后补6个字节0x00,并和ARQC做异或运算
如:
3030000000000000异或81A9DC9310F88856
得 B199DC9310F88856
2. 使用过程密钥对异或结果做3DES加密运算就得到ARPC
4A43440B2D932ACDC4E2776ED562EE43 对B199DC9310F88856做3DES加密运算得:84DD63A221F915CA(ARPC)
3. 命令(外部认证)
00 82 00 00 0A +ARPC(8B)+ARC(2B)