金融IC卡 ARQC和ARPC计算方法和实例(转)
假设发卡行的IC卡应用密钥如下:
PBOC_IMK_AC F0C34A8124CEE0A91A0B034AA97D6EACPBOC_IMK_ENC D30F45EABC12AC3EF56B0C0D7F8654DEPBOC_IMK_MAC 12B1AC4AF070CC35612BFE2D30AB600D
ARQC和ARPC及过程数据如下:
[9f26]--->[ 8]--->[5D016C91005E7CC2] //应用密文[9f27]--->[ 1]--->[80] //密文信息数据[9f10]--->[ 19]--->[07000103A04002010A010000001000D1F61152] //发卡行应用数据[9f37]--->[ 4]--->[1E78EEBC] //终端随机数[9f36]--->[ 2]--->[0240] //应用交易计数器[ 95]--->[ 5]--->[0080046000] //终端验证结果(TVR)[ 9a]--->[ 3]--->[140701] //交易日期[ 9c]--->[ 1]--->[00] //交易类型[9f02]--->[ 6]--->[000000000001] //授权金额[5f2a]--->[ 2]--->[0156] //交易货币代码[ 82]--->[ 2]--->[7D00] //应用交互特征(AIP)[9f1a]--->[ 2]--->[0156] //终端国家代码[9f03]--->[ 6]--->[000000000000] //其他金额[9f33]--->[ 3]--->[60E1C8] //终端性能[9f34]--->[ 3]--->[020300] //持卡人认证结果[9f35]--->[ 1]--->[22] //终端类型[9f1e]--->[ 8]--->[3833323049434300] //接口设备序列号[ 84]--->[ 8]--->[A000000333010101] //专用文件(DF)名称[9f09]--->[ 2]--->[0020] //应用版本号(终端)[9f41]--->[ 4]--->[00000007] //交易序列计数器
计算ARQC的过程数据:
计算的卡号: 6228000100001卡序列号: 01
交易计数器: 0240
计算ARQC的数据:000000000001000000000000015600800460000156140701001E78EEBC7D00024003A04002
计算所得ARQC: 5D016C91005E7CC2获取所得ARQC: 5D016C91005E7CC2
计算ARPC的过程数据:
计算的卡号: 6228000100001卡序列号: 01交易计数器: 0240ARQC值: 5D016C91005E7CC2授权应答码: 01计算所得ARPC: 21415243527CE78F
IC卡过程密钥SKAC的计算公式:
先计算分散密钥,再计算过程密钥PAN+序列号 取最右边16位Y:PAN+序列号 取最右边16位Z: =ALG(MDK)[Y||(Y⊕ (‘ FF’ ||‘ FF’ ||‘ FF’ ||‘ FF’ ||‘ FF’ ||‘ FF’ || ‘ FF’ ||‘ FF’ ))]得到卡片分散密钥:Z过程密钥SKAC: =ALG(Key(=Z))[‘00’||‘00’||‘00’||‘00’||‘00’||‘00’||ATC||‘00’||‘00’||‘00’||‘00’||‘00’||‘00’||(ATC⊕‘FFFF’)]
实例计算:
Pan:6228000100001
序列号:01
ATC:0240
Y:0622800010000101
(Y⊕ (‘ FF’ ||‘ FF’ ||‘ FF’ ||‘ FF’ ||‘ FF’ ||‘ FF’ || ‘ FF’ ||‘ FF’ )):0622800010000101异或FFFFFFFFFFFFFFFF = F9DD7FFFEFFFFEFE
Y||(Y⊕ (‘ FF’ ||‘ FF’ ||‘ FF’ ||‘ FF’ ||‘ FF’ ||‘ FF’ || ‘ FF’ ||‘ FF’ )):0622800010000101F9DD7FFFEFFFFEFE
得到卡片分散因子:0622800010000101F9DD7FFFEFFFFEFE
PBOC_IMK_AC对分散因子进行3DES加密得到卡片分散密钥Z:014D996FCC8F49157DC8B49E3BCDFD99
由ATC产生的过程密钥分散因子[‘00’||‘00’||‘00’||‘00’||‘00’||‘00’||ATC||‘00’||‘00’||‘00’||‘00’||‘00’||‘00’||(ATC⊕‘FFFF’)]:0000000000000240000000000000FDBF
过程密钥SKAC由Z对上述分散因子进行3DES加密得到:D4102725E6E5AD329E55AAB50BF23DA9
ARQC计算步骤及公式:
使用过程密钥SKAC通过PBOC-3DES算法对参与计算的数据进行Mac计算得到ARQC。
计算ARQC的数据:000000000001000000000000015600800460000156140701001E78EEBC7D00024003A04002
过程密钥SKAC:D4102725E6E5AD329E55AAB50BF23DA9
使用过程密钥SKAC通过PBOC-3DES算法对参数计算的数据进行Mac计算得到ARQC:5D016C91005E7CC2
ARPC计算步骤及公式:
计算ARPC过程:X=(ARC|| ‘ 00’ ||‘ 00’ ||‘ 00’ ||‘ 00’ ||‘ 00’ ||‘ 00’ )
Y: =ARQC⊕ X
ARPC: =ALG( SKAC) [Y||‘ 00’ ||‘ 00’ ||‘ 00’ ||‘ 00’ ||‘ 00’ ||‘ 00||‘ 00’ ||‘ 00]
实例计算:ARC:01X:3031000000000000Y:5D016C91005E7CC2⊕3031000000000000 = 6D306C91005E7CC2[Y||‘ 00’ ||‘ 00’ ||‘ 00’ ||‘ 00’ ||‘ 00’ ||‘ 00||‘ 00’ ||‘ 00]:6D306C91005E7CC20000000000000000ARPC由密钥SKAC对 [Y||‘ 00’ ||‘ 00’ ||‘ 00’ ||‘ 00’ ||‘ 00’ ||‘ 00||‘ 00’ ||‘ 00]进行3DES加密运行得到:21415243527CE78FEFA66824CDC903C0即ARPC:21415243527CE78F