zoukankan      html  css  js  c++  java
  • 读取社保卡信息

    1.根据 “社会保障卡文件结构和数据项(V2.0)”中的说明

                                   社会保障系统环境 SSSE 的应用标识符
    #-------------------------------------+------------------------------------------------------------+
    |DDF    |应用标识符内容         |              应用标识符                                         |
    |SSSE  | sx1.sh.社会保障       |       7378312E73682EC9E7BBE1B1A3D5CF |
    #-------------------------------------+------------------------------------------------------------+ 
                                                                基本应用数据区文件特性
    #----------------------------+-------------------+------------------------+-----------+--------------+------------+-------+
    |文件定义                     |  文件标识符    |   短文件标识符     |读控制    |写控制      |文件结构   |类别 |
    |发卡机构数据文件       |EF05               |05                          |无           |UKSSSE  | 变长记录  | 启用|
    |持卡人的基本信息文件|EF06               |06                          |无     |UKSSSE   | 变长记录  | 启用|
    #----------------------------+-------------------+------------------------+-----------+--------------+------------+-------+
                    
                                                                        数据项的格式与属性
    #----------------------------+-------------------+------------------------+-----------+--------------+------------+
    标志                                   数据项                  类型                    长度      所属文件      备注
    +----------------------------+-------------------+------------------------+-----------+--------------+------------+
     01                                 卡的识别码                 cn                     10      |
    02                                  卡的类别                    an                      01     |
    03                                   规范版本                   an                      04     |   SSSE
    04                              初始化机构编号             cn                      0C     |   "EF05"
    05                                  发卡日期                    cn                       04    |
    06                                  卡有效期                    cn                       04    |
    07                                   卡号                          an                       09    |
    +----------------------------+-------------------+------------------------+-----------+--------------+------------+
     08                                社会保障卡号码        cn                       12      |
     09                                   姓名                        an                     1E      |
     4E                                  姓名扩展                  an                      14     |   SSSE
     0A                                  性别                          cn                      01     |   "EF06"
     0B                                  民族                         cn                      01      |
     0C                                 出生地                       cn                     03      |
     0D                                 出生日期                   cn                      04      |
    +----------------------------+-------------------+------------------------+-----------+--------------+------------+
     
    可以获知,以上数据,可以直接读出,不需要走加密模块。
    ---------------------------------------------------------------------------------------------------------------------------
    2. 选用接触式读卡器,接触式读卡器可以采用SIM卡读卡器,由于SIM卡读卡器,便宜,易于购买。如果采用带安全模块的接触式读卡器,一般
    设备都无法购买到,不卖个人。SIM卡读卡器无安全模块,故适合读取非加密数据。当然可以选用其他接触式读卡器,ACR系列的接触式读卡器
    由于不支持发送APDU指令,故不适合读取卡内数据
     
    我购买的SIM卡读卡器,相关信息
    符合PC/SCVersion 1.0/2.0标准并通过微软认证,电脑&网路使用安全控制(Access Control),电子商务(e-Commerce)或会员管理机制(Royal program)
    符合财金规范第二代IC晶片金融卡(FISC II)

    可读写SLE4418/4428、SLE4432/4442、SLE4436/5536及I2C Memory卡

    可读符合ISO7816-3; T=0 and T=1通讯协定之CPU卡

    ---------------------------------------------------------------------------------------------------------------------------

    3. 使用Windows自带的智能卡API开发读取卡内数据,关于CPU卡内数据文件结构和流程,参考我的文章。
    windows中调用智能卡,需要包含winscard.h,Winscard.lib,在winscard.h中包含了许多智能卡的API,https://docs.microsoft.com/zh-cn/windows/win32/api/winscard/
    主要用到的API有:SCardEstablishContext;SCardListReaders;SCardConnect;SCardStatus;SCardBeginTransaction;SCardTransmit;SCardReconnect;
    SCardEndTransaction;SCardDisconnect;SCardFreeMemory。
    关于怎么调用这些API,就不在这里重复说了,网上一搜都有。
    ---------------------------------------------------------------------------------------------------------------------------
    4.  发送APDU指令
    1】因为上文中,已经说明,社会保障系统环境 SSSE 的应用标识符,所以直接select这个,0x00,0xa4,0x04,0x00,0x0f,0x73,0x78,0x31,0x2E,0x73,0x68,0x2E,0xC9,0xE7,0xBB,0xE1,0xB1,0xA3,0xD5,0xCF
    2】继续select,0x00,0xa4,0x02,0x00,0x02,0xEF,0x06,0x00
    3】读取数据,0x00,0xb2,0x0a,0x00,0x03;0x00,0xb2,0x0b,0x00,0x03;0x00,0xb2,0x0d,0x00,0x06;
    0x00,0xb2,0x09,0x00,0x20;0x00,0xb2,0x08,0x00,0x14 
    同理,select EF05,读取数据

     

     关于怎么解析姓名,还是没搞懂,这个ACSII码,怎么解析成汉字的。

  • 相关阅读:
    推导式
    解构
    for 循环
    运算符
    while 循环
    流程控制语句
    索引和切片
    ASC转换BCD,ASC2BCD(转)
    CString和char互转,十六进制的BYTE转CString
    C++添加简单的日记记录
  • 原文地址:https://www.cnblogs.com/nightnine/p/11495740.html
Copyright © 2011-2022 走看看