CPU卡读写程序
CPU卡也称智能卡,卡内的集成电路中带有微处理器CPU、存储单元(包括随机存储器RAM、程序存储器ROM以及芯片操作系统COS。装有COS的CPU卡相当于一台微型计算机,不仅具有数据存储功能,同时具有命令处理和数据安全保护等功能。要了解什么是CPU卡,就必须从IC卡说起。
IC卡是集成电路卡的简称,是镶嵌集成电路芯片的塑料卡片,其外形和尺寸都遵循国际标准(ISO)。芯片一般采用不易挥发性的存储器(ROM、EEPROM)、保护逻辑电路、甚至带微处理器CPU。带有CPU的IC卡才是真正的智能卡。按照嵌入集成电路芯片的形式和芯片类型的不同IC卡大致可分为接触式,非接触式、双界面卡。CPU卡既有接触式也有非接触式的。非加密存储器卡:卡内的集成电路芯片主要是EEPROM,具有数据存储功能,不具有数据处理功能和硬件加密功能。 逻辑加密存储器卡:在非加密存储器卡的基础上增加了加密逻辑电路,加密逻辑电路通过校验密码方式来保护卡内的数据对于外部访问是否开放,但只是低层次的安全保护,无法防范恶意性的攻击。 由于没有掌握关键的生产工艺,原来我国设计的CPU卡芯片一直在国外生产。这次我国自主设计、制造的CPU卡容量达到了128K。 CPU卡可适用于金融、保险、交警、政府行业等多个领域,具有用户空间大、读取速度快、支持一卡多用等特点,并已经通过中国人民银行和国家商秘委的认证。
1 CPU卡的接口特性
1.1 触点定义
触点的定义遵循ISO7816-2的规定,如图1所示。
符号说明如表1所列。
符 号 | 说 明 | 符 号 | 说 明 |
C1 | 电源电压(Vcc) | C5 | 地(GND) |
C2 | 复位信号(RST) | C6 | 不使用 |
C3 | 时钟信号(CLK) | C7 | 输入输出(I/O) |
C4 | 不使用 | C8 | 不使用 |
表1 符号说明
1.2 字符帧
数据在I/O上以图2所示的字符帧方式传输。
每个位宽是1个etu,etu = 372/f。在此处,f = 3.57 MHz。
起始位由接收端通过对I/O周期采样获得,采样周期应小于0.2 etu。2个连续字符起始位上升沿之间的间隔时间等于(10±0.2)etu加上1个保护时间(最少2个etu)。在保护时间内,卡与终端都应处于接收模式(I/O为高电平状态)。如果卡或终端作为接收方检测出奇偶错误,则I/O被置为低电平,以向发送方表明出现错误。
1.3 卡操作
卡操作的步骤如下:
① 将卡插入终端接口设备,使两者的触点相接并激活触点;
② 将卡复位,建立卡与终端间的通信;
③ 执行操作;
④ 释放触点,并从接口设备取出卡片。
以下是除第③步(执行操作)以外,各步的时序要求。
(1)触点激活
时序如图3所示。
(2)卡复位
卡利用低电平复位来完成异步复位应答,随着触点的激活,终端将进行一个冷复位并从卡获得复位应答。冷复位时序如图4所示。
冷复位过程之后,如果收到的复位应答信号不满足标准的规定,终端将启动一个热复位并从卡获得复位响应。热复位时序如图5所示。
在实际程序设计时,由Reset子程序实现触点激活和卡复位。
(3)触点释放时序
触点释放时序过程如图6所示。
2 传输协议与卡命令处理程序
ISO7816-4及中国金融集成电路(IC)卡规范所规定的异步半双工传输协议,是关于终端为实现传输控制和特殊控制而发出的命令的结构及其处理过程,包括了两种协议:字符传输协议(T = 0)和块传输协议(T = 1)。本文着重讨论字符传输协议(T = 0)协议,它是IC卡推荐使用的通信协议。
2.1 命 令
命令包含1个连续4字节的命令头,用CLA、INS、P1和P2以及1个可变长度的条件体来表示。
命令头定义如下:
◇ CLA:指令类别,除"FF"外的任何值;
◇ INS:在指令类别中的指令码,当最低位是"0",并且高位半字节既不是"6"也不是"9"时,INS才有效;
◇ P1、P2完成INS的参数字节。
条件体定义如下:
◇ Lc(发送数据长度)占1个字节,在命令中定义为发送数据的字节数,取值范围是1~255。
◇ Data为将要发送的命令数据域,字节数由Lc定义。
◇ Le (接收数据长度)占1个字节,指出命令响应中预期的数据最大字节数。Le的取值范围是0~255。如果Le=0,预期数据字节的最大长度是256。
可能的命令结构的4种情况定义如表2所列。
情 况 |
结 构 |
CLA INS P1 P2 | |
CLA INS P1 P2 Le | |
CLA INS P1 P2 Lc Data | |
CLA INS P1 P2 Lc Data Le |
表2
命令全部由终端应用层(TAL)初始化。它通过终端传输层(TTL)向卡发送1个由5个字节组成的命令头,并等待一个过程字节。
2.2 过程字节
卡收到命令后,紧接着返回一个过程字节给TTL,指明下一步该作什么,如表3所列。
序 号 | 过程字节值 |
步 骤 |
(1) | 与INS字节相同 | 所有余下的数据将由TTL传送或TTL将准备接收来自卡所剩的数据 |
(2) | “60” | TTL将提供额外工作等时间 |
(3) | “6X”或“9X”,除“60”之外(过程字节或状态码SW1) | TTL将等待下一个过程字节或状态码SW2 |
表3
在(1)、(2)情况中,TTL完成动作后将等待另一个过程字节。在(3)情况中,第二个过程字节或状态码(SW2)被收到后,TTL将做以下事情:
◇ 如果过程字节为"61",TTL将发送一个最大长度(P3)为"XX"的得到响应命令(GET RESPONSE)给卡,"XX"为SW2的值。GET RESPONSE命令仅适用于T = 0协议。命令报文的结构如表4所列。
CLA | “0x”,x指明通道号 |
INS | “C0” |
P1 | “00” |
P2 | “00”预期 |
Le | 预期数据的最大长度 |
表4
◇ 如果过程字节为"6C",TTL将立即重发前一个命令的命令头给卡,它的P3值用"XX"代替。"XX"是SW2的值。
◇ 如果过程字节是"6X"(除"60"、"61"及"6C"之外)或"9X",与前两者TTL自己处理不同,TTL将通过命令响应返回状态码给上一层--终端应用层(TAL),由TAL处理,并等待下一个命令。
2.3 卡命令处理程序流程图
图 7 是卡命令处理程序,即终端与卡的信息交互过程的流程图。
以下是引脚说明。
ECPU:决定卡的CLK触点上是否有CLK信号的引脚;
ICVCC:终端与卡的Vcc触点相接触的引脚;
ICIO: 终端与卡的I/O触点相接触的引脚;
ICCLK:终端与卡的CLK触点相接触的引脚;
ICRST:终端与卡的RST触点相接触的引脚。
以下是程序中函数介绍。
◇ void isr_timer1(void) interrupt 3:定时器1中断子程序,用于按位发送和接收数据字节;
◇ void Snd(void): 发送数据子程序,由定时器1实现;
◇ void Rcv(BYTE bytenr,BYTE *Buffer):接收数据子程序(参数含义分别是:接收数据字节数、接收数据的存放处),由定时器1实现;
◇ 函数1 void Reset(BYTE *len, BYTE *resp):复位子程序(参数含义分别是:返回复位响应数据的长度、复位响应数据);
◇ 函数2 void Power_off(void):触点释放子程序;
◇ 函数3 WORD CPUC_Cmd(BYTE len,BYTE* comm, BYTE *lenr, BYTE* resp):CPU卡命令子程序(参数含义分别是:发送命令长度、发送命令、返回字节数、返回数据),函数返回状态字节SW1SW2。
CPU卡读写程序的更多相关文章
- Android NFC M1卡读写&芯片卡读写(CPU卡读写)(RFID读写)
版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明.本文链接:https://blog.csdn.net/sgn5200/article/detai ...
- CPU卡的读写【转】
本文转载自:http://blog.csdn.net/logaa/article/details/7465226 一般来说,对存储卡和逻辑加密卡操作,使用接触式IC卡通用读写器:对CPU卡使用CPU卡 ...
- CPU卡中T=0通讯协议的分析与实现
IC卡的应用越来越广泛,从存储卡到逻辑加密卡,目前CPU卡已经逐渐在应用中占据主导地位.CPU卡根据通讯协议可分为两种:接触式和非接触式.接触式CPU卡主要采用两种通讯协议:T=0和T=1通讯协议.T ...
- cpu卡,sam卡原理
第一部分 CPU基础知识一.为什么用CPU卡IC卡从接口方式上分,可以分为接触式IC卡.非接触式IC卡及复合卡.从器件技术上分,可分为非加密存储卡.加密存储卡及CPU卡.非加密卡没有安全性,可以任意改 ...
- CPU卡
CPU卡芯片通俗地讲就是指芯片内含有一个微处理器,它的功能相当于一台微型计算机.人们经常使用的集成电路卡(IC卡)上的金属片就是CPU卡芯片.CPU卡可适用于金融.保险.交警.政府行业等多个领域,具有 ...
- CPU卡详解【转】
本文转载自:http://blog.csdn.net/logaa/article/details/7571805 第一部分 CPU基础知识 一.为什么用CPU卡 IC卡从接口方式上分,可以分为接触式I ...
- IC卡、M1卡、CPU卡、SAM卡、PSAM卡的联系与区别
一. 技术方面(非接触式IC卡) 1. 逻辑加密卡又叫存储卡,卡内的集成电路具有加密逻辑和EEPROM(电可擦除可编程只读存储器). 2. CPU卡又叫智能卡,卡内的集成电路包括中央处理器(CPU ...
- 射频识别技术漫谈(27)——CPU卡概述
智能卡按安全级别可以分为三类:存储器卡.逻辑加密卡和CPU卡,其中CPU卡是安全级别最高的.从“CPU”这个名字可以看出,CPU卡最大的特点就是卡片里面有一个"CPU",有了CPU ...
- 第36章 SDIO—SD卡读写测试
第36章 SDIO—SD卡读写测试 全套200集视频教程和1000页PDF教程请到秉火论坛下载:www.firebbs.cn 野火视频教程优酷观看网址:http://i.youku.com/f ...
随机推荐
- centos 添加用户
测试环境:CentOS 6.0 1.添加用户,首先用adduser命令添加一个普通用户,命令如下: #adduser tommy //添加一个名为tommy的用户 #passwd tommy // ...
- Linux下创建、查看、提取和修改静态库(*.a)
先说明一点,静态库文件是由多个目标文件打包而成的,在windows下静态库文件的后缀是.lib,而在linux下静态库文件的后缀是.a(a是archive的缩写,也就是文档文件). 废话少说,下面直接 ...
- eclipse与myeclipse工程互转
eclipse转myeclipse: 在Myeclipse中新建web工程导入即可. myeclipse转eclipse: 在eclipse中新建web工程,把myeclipse项目中代码手动拷贝到 ...
- HTML5 简单实现刮刮乐效果
<!doctype html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- 中介者模式(Mediator) 笔记
中介者模式(Mediator Pattern):定义一个中介对象来封装系列对象之间的交互.中介者使各个对象不需要显示地相互引用,从而使其耦合性松散,而且可以独立地改变他们之间的交互. 类图: Medi ...
- onActivityResult不执行 或者 onActivityResult的解决方法
开发人员都知道,可以通过使用 startActivityForResult() 和 onActivityResult() 方法来传递或接收参数.然而在一次使用中,还没等到被调用的 Activity 返 ...
- Java正則表達式语法
Java正則表達式语法 字符 说明 \ 将下一字符标记为特殊字符.文本.反向引用或八进制转义符.比如,"n"匹配字符"n"."\n"匹配换行 ...
- XMPP通讯开发-好友获取界面设计
在XMPP通讯开发-服务器连接 中我们成功连接到服务器上面,然后进入到主界面,接下来就是获取好友列表,这里我们分段开发,首先就是界面的设计,这里仿照QQ好友界面,里面的数据先是用模拟的,下一章获取服务 ...
- Dubbo亮点总结
Dubbo是阿里巴巴的一个开源RPC项目,可在http://dubbo.io进行訪问 类似的产品有Hessian.spring httpinvoke 等. Dubbo的亮点总结例如以下: 1.服务注冊 ...
- VS2010字体优化
文本编辑器:Consolas 环境字体:微软雅黑