金融IC卡 ARQC和ARPC计算方法和实例

admin2025-12-25 02:05:489342

金融IC卡 ARQC和ARPC计算方法和实例

最新推荐文章于 2025-04-30 13:31:29 发布

原创

最新推荐文章于 2025-04-30 13:31:29 发布

·

1.9w 阅读

·

2

·

22

·

CC 4.0 BY-SA版权

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

金融算法

专栏收录该内容

1 篇文章

订阅专栏

本文详细介绍了IC卡应用中ARQC(应用互验证证书)与ARPC(应用响应码证书)的计算过程及其相关密钥的生成方法。以具体案例展示了如何使用过程密钥SKAC通过PBOC-3DES算法来计算ARQC和ARPC。

假设发卡行的IC卡应用密钥如下:

PBOC_IMK_AC F0C34A8124CEE0A91A0B034AA97D6EAC

PBOC_IMK_ENC D30F45EABC12AC3EF56B0C0D7F8654DE

PBOC_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

交易计数器: 0240

ARQC值: 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:01

X:3031000000000000

Y:5D016C91005E7CC2⊕3031000000000000 = 6D306C91005E7CC2

[Y||‘ 00’ ||‘ 00’ ||‘ 00’ ||‘ 00’ ||‘ 00’ ||‘ 00||‘ 00’ ||‘ 00]:6D306C91005E7CC20000000000000000

ARPC由密钥SKAC对 [Y||‘ 00’ ||‘ 00’ ||‘ 00’ ||‘ 00’ ||‘ 00’ ||‘ 00||‘ 00’ ||‘ 00]进行3DES加密运行得到:21415243527CE78FEFA66824CDC903C0

即ARPC:21415243527CE78F