目的:自己计算TAC并且和CPU卡消费成功后产生的TAC值相同
原因:电子钱包交易过程中可能会出现闪卡现象(用户卡中的金额已经扣除,但是终端没有收到卡片返回的TAC和MAC2),所以再次靠卡时,终端会判断是否是闪卡,如果是则终端根据之前的交易数据,自行计算TAC,然后上送后台系统。
算法:DES_MAC 算法
说明:
以上过程全部CPU卡,PSAM内部COS自动完成。
以下计算TAC的流程适用于:
1.如果PSAM卡中TAC秘钥类型是口令重装密钥类型,则此PSAM卡中的TAC密钥对CPU卡中的分散因子分散之后=CPU卡中的TAC密钥,因为 口令重装密钥在被使用时COS会自动左右8字节进行异或。
2.如果PSAM卡中的TAC密钥类型是加密MAC密钥,或者是MAC密钥类型,则此PSAM卡TAC密钥对CPU卡中的分散因子分散之后=CPU卡中的TAC密钥左右8字节异或的值
例程计算:
先用CPU卡消费计算一个TAC,并且保存计算TAC需要的数据,
然后用相关数据自己计算TAC,比较和CPU卡产生的TAC是否相同,计算过程中使用PSAM卡的DES初始化命令进行分散密钥,DES命令计算TAC。
交易类型标识: 09
|
长度 |
值 |
描述 |
代码 |
(byte) |
(Hex) |
|
CLA |
1 |
80 |
|
INS |
1 |
1A |
|
P1 |
1 |
44 |
密钥用途,TAC密钥 |
P2 |
1 |
00 |
密钥版本,TAC密钥标识 |
Lc |
1 |
10 |
分散因子的长度16字节 |
DATA |
XX |
20 16 12 21 00 00 10 03 07 92 80 00 00 00 01 45 |
分散因子: 卡序列号 机构代码 |
Le |
— |
|
不存在 |
|
长度 |
值 |
描述 |
代码 |
(byte) |
(Hex) |
|
CLA |
1 |
80 |
|
INS |
1 |
FA |
|
P1 |
1 |
05 |
|
P2 |
1 |
00 |
DES标识号 |
Lc |
1 |
20 |
要计算的数据长度 |
DATA |
XX |
00000001 09 36 04 86 20170214154000 80 00 |
TAC所需数据8字节初始值 |
Le |
— |
|
不存在 |