zoukankan      html  css  js  c++  java
  • 金融IC卡 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
     
  • 相关阅读:
    Linux 题库面试题(一)中级
    Linux 题库面试题(一)初级
    题库性能面试题
    数据库面试题(一)子查询及面试题练习
    接口分类(http接口、api接口、RPC接口、RMI、webservice、Restful等概念)
    postman 基本操作
    Monkey APP压力稳定性测试
    Charles 功能介绍说明和使用教程
    在线绘图工具
    tcpdump
  • 原文地址:https://www.cnblogs.com/1024Planet/p/6256545.html
Copyright © 2011-2022 走看看