ISO7816标准读写文件部分

表格1、ISO 7816 CLA值

CLA

指令类

0x0n, 0x1n

ISO 7816 - 4卡指令,比如文件存取和安全操作

20 to 0x 7F

保留

0x8n or 0x9n

你可以用作你的特定的应用程序指令的ISO/IEC 7816 - 4格式,根据标准解释' X '

0xAn

特定的应用程序或者供应商的指令

B0 to CF

你可以用作特定应用程序的ISO/IEC 7816 - 4格式

D0 to FE

特定的应用程序或者供应商的指令

FF

保留给协议类型选择

表格2、当 CLA = 0x时的ISO 7816 - 4 INS值

INS

命令描述

0E

Erase Binary

20

Verify

70

Manage Channel

82

External Authenticate

84

Get Challenge

88

Internal Authenticate

A4

Select File

B0

Read Binary

B2

Read Record(s)

C0

Get Response

C2

Envelope

CA

Get Data

D0

Write Binary

D2

Write Record

D6

Update Binary

DA

Put Data

DC

Update Record

E2

Append Record

 

 

 

 从读写机制来看,IC卡可以分为同步卡(如存储卡、逻辑加密卡)和异步卡(如CPU卡)。同步卡和异步卡在卡的复位、卡对复位的应答以及卡与接口设备之间信息交换的方式等方面存在很大的差异[4,5]。表2简述了两种卡的读写机制。

表2 同步卡和异步卡的读写机制

过程同步卡异步卡
卡的复位

  接口设备“激活”触点后,RST信号上升,要求RST维持在状态H至少50μs。在RST上升沿之后的5μs后,加上时钟脉冲CLK,CLK处于状态H的时间可在10~50μs之间,当RST处于状态H时,不允许加上1个以上的时钟脉冲。CLK与RST下降沿之间的时间间隔不小于5μs。

  接口设备“激活”触点后的200时钟周期内,I/O线将被置于状态Z(传号)。使用低电平复位的卡,是依靠RST维持在状态L来进行复位的。RST处于状态L至少40000个时钟周期,当RST从状态L变化到状态H之后的400~40000个时钟周期之间,I/O线上的复位应答将开始

卡对复位的应答

复位过程之后,时钟脉冲控制输出信息,在RST下降沿后的10~100μs 产生第一个时钟脉冲,从卡中读取数据位。
卡的复位应答信息包含一个从卡发送到接口设备的标头,标头的长度固定为32位,并由两个8位字段字段H1和H2开始。标头信息给出了该卡所采用的协议类型及协议参数等。

复位应答信号以字符帧进行传送。每个字符帧由10位组成,1位起始位,8位数据位,1位偶校验位。复位应答信息长度与卡的种类有关,但不超过32个字符。应答信息按以下顺序传送:初始字符TS、格式字符T0、接口字符、历史字符以及校验字符。应答信息给出了该卡所采用的协议类型及有关参数等。

信息交换

按照标头信息给出的协议类型和参数,在同步脉冲CLK的控制下,卡与接口设备之间按位进行信息交换。

按照复位应答信息所给出的协议类型和参数,卡与接口设备之间以一定的波特率进行异步数据通讯。

2 读写器的硬件电路设计
  
FR100型IC卡读写器的硬件结构框图如图1所示。它由89C51单片机、RS232电平转换电路、IC卡读写控制电路、EEPROM、设置开关等组成。89C51单片机是整个读写器的控制中心,它一方面通过RS232串行接口接收上位机的指令,并对指令进行解释,然后通过IC卡读写控制电路对IC卡进行相应的操作,并将操作结果通过RS232串行接口传送给上位机。

301.gif (4820 bytes)

图1 FR100型IC卡读写器的硬件构成框图

  IC卡读写控制电路由卡的插入/退出识别、电源供给、时钟信号产生、信号隔离与驱动等电路组成,它的功能是提供读写IC卡所需的各种状态和控制信号。由于不同类型的IC卡在读写机制上存在着一定的差异,为了使研制的FR100型IC卡读写器具有较好的兼容性,能够正确读写各类存储卡、逻辑加密卡和微处理器卡(CPU卡)等目前常用的接触式IC卡,读写控制电路各种控制信号的产生都受89C51单片机的I/O口控制,因此可以通过软件编程来产生读写不同种类的IC卡所需的读写控制信号。例如,采用图2所示的时钟信号发生电路,当89C51单片机的P1.0、P1.1口输出高电平时,该电路输出频率为3.5712MHz的稳定时钟信号,可以满足异步卡对CLK信号的要求;而当P1.0口输出低电平时,电路的输出与P1.1口的状态反相,若通过软件编程在P1.1口输出一个同步脉冲,则可以满足同步卡对CLK信号的要求。

302.gif (3220 bytes)

图2 时钟信号发生电路原理图

  EEPROM是用来存储读写器的系统参数及下载用户程序的。由于用89C51的RD信号和PSEN信号相与后作为EEPROM存储器的RD信号,因此EEPROM不仅可以存储系统的一些数据,还可以用来存储用户程序代码。设置开关是用来设置读写器工作方式的,当开关处于ON状态时,EEPROM的WR线与89C51的WR线连通,读写器工作在联机工作方式,此时用户可以通过RS232串行口来控制读写器的操作,也可以下载用户程序;当开关处于OFF状态时,读写器处于脱机工作方式,此时读写器执行用户下载到EEPROM中的程序,读写器的操作完全由用户程序决定。而且此时EEPROM的WR线与89C51的WR线断开,可以防止EEPROM中的用户程序被非法修改。该读写器的用户程序下载功能,使其二次开发能力大大增强,提高了读写器的开放性。

3 读写器的软件设计
  
FR100型IC卡读写器的软件在设计上采用了模块化的结构,主要包括IC卡类型判别模块、读写控制模块、与上位机的通讯接口模块等。
  IC卡类型判别模块是以IC卡对复位的应答信息(ATR)为依据来判断当前插入的IC卡的类型。从前面的分析可知,IC卡在复位之后都要输出ATR,而且不同的IC卡的ATR也是不同的,ATR可以正确区分各类IC卡。IC卡类型判别程序的流程图如图3所示。由于IC卡有同步卡和异步卡之分,因此在程序中首先以异步卡的操作方式对卡进行复位操作并读取ATR,如果不能正确读取ATR,再以同步卡的操作方式对卡进行复位操作并读取ATR,如果两种方式都不能正确读取ATR,则表明该卡已经损坏。图3中的RTNCODE是返回代码,它等于0表示读写器中没有卡或卡没有插到位,等于1表示卡已损坏,等于11表示该卡是异步卡,等于12表示该卡是同步卡;当返回代码为11和12时,存储在Buffer中的ATR可对卡的类型进行进一步的区分。

303.gif (9960 bytes)

图3 IC卡类型判别程序的流程图

  读写控制模块根据调用IC卡类型判别模块所返回的RTNCODE和Buffer内容检索出该卡所遵循的读写方式和数据协议,并依据此协议对读写控制电路的各个信号进行控制和检测,完成IC卡与读写器之间的数据交换。对于同步卡,读写操作一般按下面的三个基本操作步骤进行,即:复位、数据字段的定位、读(或写)操作。每一操作步骤中的RST、CLK、I/O、PGM等信号的控制在该卡所遵循的操作协议中都有明确的规定。对于异步卡的读写操作实际上是以异步串行通讯的方式在接口设备与卡之间进行命令的传递与应答的过程。接口设备与卡之间的命令结构和应答结构的一般形式为:
  命令结构
g3-1.gif (1155 bytes)

  应答结构g3-2.gif (811 bytes)
  其中,CLA是指令类别,INS是指令代码,P1,P2是命令参数,P3是编码数据字节(D1…Dn)的数量n,而SW1,SW2是卡返回的状态字节。在实际程序中,不同的异步卡有不同的指令(INS)集及相应的参数,通过检索即可得到。
  与上位机的通讯接口模块的功能是通过RS232串行口接受上位机的命令,将该命令转换成对IC卡的操作,并将执行结果传回给上位机。该模块实际上是一命令解释执行程序,与IC卡的具体操作无关,受篇幅所限,在此不再赘述。

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
【项目资源】:包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、MATLAB、python、web、C#、EDA、proteus、RTOS等项目的源码。 【项目质量】:所有源码都经过严格测试,可以直接运行。功能在确认正常工作后才上传。 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【附加价值】:项目具有较高的学习借鉴价值,也可直接拿来修改复刻。对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。 【沟通交流】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。鼓励下载和使用,并欢迎大家互相学习,共同进步。【项目资源】:包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、MATLAB、python、web、C#、EDA、proteus、RTOS等项目的源码。 【项目质量】:所有源码都经过严格测试,可以直接运行。功能在确认正常工作后才上传。 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【附加价值】:项目具有较高的学习借鉴价值,也可直接拿来修改复刻。对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。 【沟通交流】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。鼓励下载和使用,并欢迎大家互相学习,共同进步。【项目资源】:包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、MATLAB、python、web、C#、EDA、proteus、RTOS等项目的源码。 【项目质量】:所有源码都经过严格测试,可以直接运行。功能在确认正常工作后才上传。 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【附加价值】:项目具有较高的学习借鉴价值,也可直接拿来修改复刻。对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。 【沟通交流】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。鼓励下载和使用,并欢迎大家互相学习,共同进步。【项目资源】:包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、MATLAB、python、web、C#、EDA、proteus、RTOS等项目的源码。 【项目质量】:所有源码都经过严格测试,可以直接运行。功能在确认正常工作后才上传。 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【附加价值】:项目具有较高的学习借鉴价值,也可直接拿来修改复刻。对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。 【沟通交流】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。鼓励下载和使用,并欢迎大家互相学习,共同进步。【项目资源】:包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、MATLAB、python、web、C#、EDA、proteus、RTOS等项目的源码。 【项目质量】:所有源码都经过严格测试,可以直接运行。功能在确认正常工作后才上传。 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【附加价值】:项目具有较高的学习借鉴价值,也可直接拿来修改复刻。对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。 【沟通交流】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。鼓励下载和使用,并欢迎大家互相学习,共同进步。【项目资源
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值