应用密文生成的方法是以一个唯一的16字节的IC卡应用密文(AC)子密钥MKAC以及按6.1.1条的描述选择的数据作为输入,然后按以下的两步计算8字节的应用密文:

1.第一步从IC卡应用密文(AC)子密钥MKAC和两字节的IC卡应用交易计数器作为输入,分散得到16字节的应用密文过程密钥SKAC,使用11.1.3条中指明的过程密钥产生函数。

前提:

(1)获得IC卡AC子密钥,或者获得发卡行AC主密钥

   本例:

MDKAC            =     C4D689158AD9FB9D23105B91CE046D0E


(2)得到IC卡卡号及卡序列号

本例:

   PAN     =     6210220110002707355

   PAN ser =  01

(3)取IC卡AC子密钥

如果已经获得了IC卡AC子密钥则略过此步。用发卡行主密钥分散出IC卡AC子密钥。方法为使用发卡行主密钥,对PAN的后14位(如果PAN不足14位前面补0)加PAN序列号(共8B)并对此取反连接得到的16字节数据,做3DES加密就得到IC卡AC子密钥。

本例:

2011000270735501 取反  得到 8字节数据 DFEEFFFD8F8CAAFE连接得到16字节数据2011000270735501DFEEFFFD8F8CAAFE

用MDKAC对2011000270735501DFEEFFFD8F8CAAFE 做3DES加密得 

应用密文算法_密钥对


B8A15DA5F7043C317D9FD8F8DFE2BD75即UDK,IC卡AC子密钥

(4)得过程密钥

用IC卡AC子密钥,对交易计数器ATC做3DES加密:

a.在ATC前补6字节0x00,对ATC取反并连接

 ATC      =     03D3

b.对ATC取反得

~ ATC  =  FC2C

c.并在ATC及~ ATC 前各补6字节0x00,得:

00000000000003D30

00000000000FC2C

d.最后将其连接得

00000000000003D3000000000000FC2C

f.用IC卡AC子密钥对如上数据做3DES加密得过程密钥:

应用密文算法_数据_02

SKAC=4A43440B2D932ACDC4E2776ED562EE43 (过程密钥)

 

2.第二步使用上一步分散得到的16字节的应用密文过程密钥并将11.1.2条中指明的MAC算法应用到经选择的数据来生成8字节的应用密文。

IC卡返回的55域数据为:

待校验的密文: 81 A9 DC 93 10F888 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:

应用密文算法_3d_03


AAC、TC或ARQC             =  81A9DC9310F88856

与IC返回的密文比较相等,校验成功!

 

3.发卡行认证

生成8字节的授权响应密文ARPC的方法是将16字节的应用密文过程密钥SKAC(见6.1条)按照12.1条中指明的对称加密算法对8字节长的由IC卡按6.1条描述的方法生成的ARQC和2字节的授权响应码ARC进行加密:

1)在2字节的ARC的后面补上6个‘00’字节来获得一个8字节的数

ARC=3030

ARQC=81A9DC9310F88856

X:=(ARC||‘00’||‘00’||‘00’||‘00’||‘00’||‘00’)。

2)计算Y:=ARQC⊕X。

 

应用密文算法_3d_04

3)计算ARPC

使用过程密钥对异或结果做3DES加密运算就得到ARPC

应用密文算法_3d_05

ARPC=84DD63A221F915CA

外部认证命令:

00 82 00 00 0A +ARPC(8B)+ARC(2B)