zoukankan      html  css  js  c++  java
  • 金融系列7《动态数据认证》


    1)  标准的动态数据认证,卡片行为分析前执行.

    2)  复合动态数据认证/应用密文生成,在GENERATEAC命令发出后执行。

    3)  由终端恢复认证中心公钥。

    4)  由终端恢复发卡行公钥。

    5)  由终端恢复IC卡公钥。

    6)  RSA

    A.   N=P*Q//N公开,的模数,IC卡公钥

    B.   Φ(N)=(P-1)* (Q-1) //欧拉函数, 小于n并与n互素的正整数的个数

    C.   gcd(E,Φ(N))=1    //E公开,加密密钥

    D.   D*E≡1(modΦ(N))  //D保密, 解密密钥

    E.   Y=X^Emod N

    F.   X=Y^Dmod N

    G.   DQ=D mod (q-1)  //8202 Q的指数

    H.   Qinv=1/qmod p    //8201  系数数据

    I.   DP=D mod (p-1)  //8203 P的指数

     

     

     1. 恢复和验证IC卡公钥(P[8205]*Q[8204])

    //IC卡公钥指数(9F47)
    IC_E = 03
    //IC卡公钥证书(9F46)
    IC_I =11E5E2C0727BE714A9EE439AC9ED089B8C9FC8A2887A895E977517A2AF060053035875E4A0DDE71A4DCFB91CDEF25D250BE244AEE03111D7CE751385883A1A251213951FD19264355781D06C65331938B5C03C32C1EFCE808670FF484808345BB320A747E7E252EAD7F50075F6BD8E5F0D786097B990B8B3376C402B22261D56A67813D86828FBBE680ED9862820C6117B26DC23DDE00EFD1FB47D48F666885120DE33C94F3AAACE15C39DD348980CBB
    //恢复IC卡公钥证书(唯一)
    //IC_O = DeRSA(_CA_N, IC_E, IC_I)
    IC_O =6A046230360501000269314F122100064C0101B001+B85E8056A5307E37849412709FCF3BA50C413A45CDB38858E141112BE5744E80AF61E8353D4BCCD730979A1107B69E57794B5339F1E000EB04244FFA146DE06BB47AEB9B396539EE914A01D9ECF7A6C166CAA5994912A04F2334E83FB1812CB45AA140E604A41FE51C22C940882F4932357871832C0847DA6432DBD60184635ED1240023D033698A55D79200DB879D352B6E8FA5E0331D4D319CBC
     
    //BB = ('B', CA_N.GetLength() - 52);
    //HashValueInfo = IC_O.Mid(2, IC_O.GetLength() -42 - 2) + TagValue[9F48] + IC_E + SDA_Value
    //HashV = SHA1(HashValueInfo);
    HashV = 698A55D79200DB879D352B6E8FA5E0331D4D319C

     

    字段名

        长度            

    描述

                            格式

    恢复数据头

    1

    十六进制,值为‘6A’

    b

    证书格式

    1

    十六进制,值为‘04’

    b

    应用主账号

    10

    主账号(在右边补上十六进制数‘F’)

    cn 20

    证书失效日期

    2

    MMYY,在此日期后,这张证书无效

    n4

    证书序列号

    3

    由发卡行分配给这张证书的唯一的二进制数

    b

    哈希算法标识

    1

    标识用于在数字签名方案中产生哈希结果的哈希算法

    b

    IC卡公钥算法标识

    1

    标识使用在IC卡公钥上的数字签名算法

    b

    IC卡公钥长度

    1

    标识IC卡公钥的模的字节长度

    b

    IC卡公钥指数长度

    1

    标识IC卡公钥指数的字节长度

    b

    IC卡公钥或IC卡公钥的最左边字节

    NI-42

    如果NIC≤NI–42,这个字段包含了在右边补上了NI–42–NIC 个值为‘BB’的字节的整个IC卡公钥。

    如果NIC >NI -42,这个字段包含了IC卡公钥最高位的NI–42个字节

    b

    哈希结果

    20

    IC卡公钥以及相关信息的哈希值

    b

    恢复数据结尾

    1

    十六进制,值为‘BC’

    b

     

     

     2. 动态签名应用数据的生成

    //内部认证,+DDOL[9F49](由终端生成的不可预知数,9F37,4个字节的二进制数)
    Send:0088000004+11223344
    --->:61B3
     
    Send:00C00000B3 //IC卡通过使用IC卡私钥对计算
    --->:8081B009A7044A0C50066FB5DBF49DFF7FD280BB5664522B51916BBC0AABE39A564190AA2092E5E5FB406D543883AF3FE8C5C4A8A6DF090D9CC7006ED0530B3485E895DEADE1FE7EE93825EEAC64D7E44CA62F5CFF78AFE50792501D63ABD956397AFEDDAE807DE9BE9EDFA29C1F98CCE36F208E23A847AE1F6E11CA31A84B76165B9FB0E3C2E9F9C91ACBD4A5BB845D1B17881F19FAB2FE7FA20B936F16802A2EEDC4C4412DDDCCF848961743A86ADA1724F99000
    [√]  内部认证生成密文成功(_IC_I)
     
    //恢复IC卡签名动态数据
    //_IC_N(IC卡公钥P*Q) = IC_O.Mid(42, nIssuer_n_Len - 84) + TagValue[9F48]
    //_IC_O = DeRSA(_IC_N, IC_E, _IC_I);
    _IC_O =6A050108020003AAAAAAAAAABBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB79E94C728CC576FC0A4EDA19A979BAC5698A0D75BC
     
    //HashValueInfo = _IC_O.Mid(2, _IC_O.GetLength() -22 * 2) + TagValue[9F37];
    //HashV = SHA1(HashValueInfo);
    HashV = 79E94C728CC576FC0A4EDA19A979BAC5698A0D75
    [√]  动态签名数据摘要信息一致......
    [√]  动态数据认证成功......

     

    字段名

    长度

    描述

    格式

    恢复数据头

    1

    十六进制,值为‘6A’

    b

    签名数据格式

    1

    十六进制,值为‘05’

    b

    哈希算法标识

    1

    标识用于在数字签名方案中产生哈希结果的哈希算法1

    b

    IC卡动态数据长度

    1

    标识IC卡动态数据的字节长度

    b

    IC卡动态数据

    LDD

    由IC卡生成和/或存储在IC卡上的动态数据

    -

    填充字节

    NIC-

    LDD–25

    (NIC-LDD–25)个值为‘BB’的填充字节

    b

    哈希结果

    20

    动态应用数据以及相关信息的哈希值

    b

    恢复数据结尾

    十六进制,值为‘BC’

    b

     

    文/yanxin8原创,获取更多信息请访问http://yanxin8.com/440.html


    C++ EMV EP/ED  Javascript MFC MIFARE  noteCard  PBOC  php QPBOC WordPress  wp插件 创意发明 发现 小众软件 常识 教程 旗舰版 智能卡 注册码 游记 社保 算法 美文 职场 金融 面试题  0 1 2

    Meet so Meet. C plusplus I-PLUS....
  • 相关阅读:
    android使用wcf接收上传图片视频文件
    android获取时间差的方法
    android JSON 技术
    Android LogCat使用详解
    VS2013菜单栏文字全大写的问题
    Mysql5.7安装配置
    解决Android Studio Gradle Build Running慢的问题
    Mysql创建用户并授权
    Windows 7 常用快捷键
    Python CRC16校验算法
  • 原文地址:https://www.cnblogs.com/iplus/p/4467214.html
Copyright © 2011-2022 走看看