第一范文网 - 专业文章范例文档资料分享平台

1非接触式IC卡工作原理 

来源:用户分享 时间:2025/7/2 7:48:06 本文由loading 分享 下载这篇文档手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:xxxxxxx或QQ:xxxxxx 处理(尽可能给您提供完整文档),感谢您的支持与谅解。

1.非接触式IC卡工作原理

非接触式IC卡可用以存储数字、字母编码信息,具有智能读写和加密通信的功能,卡中存储的需要识别、交互的数据可以随时写入、更改或擦除。它通过无线电波与读写设备进行数据交换,不需要电气触点,读写频率高。卡中的集成电路除了带加密逻辑、串行EEPROM (可擦除、可编程只读存储器) 、微处理器CPU外,还带有射频收发及相关电路。无源非接触式IC卡框图如图1 所示。

非接触式IC卡接收射频脉冲,经整流给电容器充电,再经稳压后作为工作电压。数据解调部分从接收到的射频脉冲中解调出数据送到控制逻辑,控制逻辑接受指令完成存储、发送数据或接收读写器的数据。

图1 无源非接触式IC卡框图

系统以13. 56MHz的工作频率,半双工方式在读写器与IC卡之间双向传递数据。读写器将要发送的信号,编码后加载在频率为13. 56MHz的载波信号上经天线向外发送,进入读写器工作区域的IC卡接收此脉冲信号,一方面卡内芯片中的射频接口模块由此信号获得电源电压、复位信号、时钟信号;同时卡内芯片中的有关电路对此信号进行调制、解码、解密,然后对命令请求、密码、权限等进行判断,若为读命令,控制逻辑电路则从存储器中读取有关信息,经加密、编码、调制后经卡内天线发送给读写器,读写器对接收到的信号进行解调、解码、解密后送至后台计算机处理。若为修改信息的写命令,有关控制逻辑引起的内部电荷泵提升工作电压,提供擦写EEPROM时所需的高压,以便对EEPROM 中的内容进行改写。若经判断其对应的密码和权限不符,则返回出错信息与接触式IC卡相比较。

2.射频卡读写器硬件设计

系统工作前,通过读写器中的写卡功能对所有的IC卡写入指定的数据,在正式的工作中,由读写卡模块的读卡功能将放入感应区的IC卡中的数据读出,并将数据传输到微处理器中,然后再由微处理器通过对比判断读卡模块上传的数据是否正确,最后根据微处理器得出的结果决定是否开门。系统的原理框图如图2所示。

图2 系统原理图

2. 1 读写卡模块

IC卡读写模块中采用的芯片是MF RC500,它的并行微控制器接口自动检测连接的8 位并行接口的类型,它包含一个易用的双向F IFO 缓冲区和一个可配置的中断输出,这样就为连接各种MCU 提供了很大的灵活性,即使使用非常低成本的器件也能满足高速非接触式通信的要求。

数据处理部分执行数据的并行串行转换,它支持的帧包括CRC和奇偶校验,它以完全透明的模式进行操作,因而支持ISO14443A的所有层,状态和控制部分允许对器件进行配置以适应环境的影响并使性能调节到最佳状态,当与M I2FARE Standard 和M IFARE 产品通信时, 使用高速CRYPTO1 流密码单元和一个可靠的非易失性密匙存储器。模拟电路包含了一个具有非常低阻抗桥驱动器输出的发送部分使得最大操作距离可达100mm。接收器可以检测到并解码非常弱的应答信号 ,由于所采用的接收器已不再是限制操作距离的因素,在此使用的IC卡读写模块具有比较大的科学先进性,比以往使用的ID卡系统拥有更高的性能。

2. 2 微处理器模块

在微处理器上采用了AT89C51单片机为处理芯片。由于系统中IC卡方面的功能已经可以用RC500处理,处理器只负责对读写器的读写和外部通讯,所以此单片机完全符合上述功能。微处理器的P0口连接读写卡模块的一些控制信号端口, P1口连接读写卡模块的数据和地址端口。在单机连接使用时可直接使用微处理器的串口,如果是多机连接时,可再加入串口转RS485模块,这样对每一个使用的系统进行编号处理就构成了多机的联机使用状态,。

3.射频卡读写器软件设计

在系统的主程序流程图中主要画出的是微控制器的程序流程,而加密算法作为一个子程序嵌入到主程序当中。在此系统中,微控制器中的程序使用的是C语言,但在编写数据加密系统中使用的是专用的编写程序。由于两种编程语言使用的并不是相同的语言,如何将两种语言在同一系统中体现出各自的功能是本系统软件编写的重点和难点。本系统主程序流程图如图3所示。

图3 主程序流程图

3. 1 微控制器软件设计

此模块中的设计主要是IC卡模块与微控制器之间的通讯设计。其中重要的是密码的写入与读写的操作过程。以下便是本模块的部分原始程序。装载密码的应用程序: uint8 PCDLoadKey ( uint8 KEYAB, uint8 SecNr, uint8 3 Key) {

uint8 Status;

SerBfr[CMDTYPE ] = 1;

/ /对IC卡存储芯片写时续操作 SerBfr[COMMAND ] = ′E′; / /定义数据长度

SerBfr[LENGTH ] = 8; / /写入卡的密码数据 SerBfr[DATA ] = KEYAB; / /进行加密操作

SerBfr[DATA + 1 ] = SecNr;

memcopy(&SerBfr[DATA + 2 ] , Key, 6) ; / /对写入的数据进行验证

Status =R500_Cmd ( SlvAddr) ; if ( Status = =OK) { / /判断加密操作

Status = SerBfr[ STATUS]; }

return Status;

}

写读卡芯片寄存器的应用程序:

uint8 PCDWriteReg( uint8 RegAddr, uint8 RegValue) {

uint8 Status;

SerBfr[CMDTYPE ] = 1;

/ /对IC卡存储芯片写时续操作 SerBfr[COMMAND ] = ′F′; / /定义数据长度

SerBfr[LENGTH ] = 2; / /定义写数据的地址

SerBfr[DATA ] =RegAddr; / /调整地址

SerBfr[DATA + 1 ] =RegValue; / /调用写数据程序

Status =R500_Cmd ( SlvAddr) ; if ( Status = =OK) { / /验证数据正确性 Status = SerBfr[ STATUS]; }

return Status; }

读读卡芯片寄存器的应用程序:

uint8 PCDReadReg( uint8 RegAddr, uint8 3 RegValue) {

uint8 Status;

SerBfr[CMDTYPE ] = 1;

/ /对IC卡存储芯片写时续操作 SerBfr[COMMAND ] = ′G′; / /定义数据长度

SerBfr[LENGTH ] = 1; / /定义读数据的地址

SerBfr[DATA ] =RegAddr; / /调用读数据程序

Status =R500_Cmd ( SlvAddr) ; if ( Status = =OK) {

Status = SerBfr[ STATUS]; if ( Status = =OK) / /验证数据正确性

3 RegValue = SerBfr[DATA ]; }

return Status; }

3. 2 数据加密软件设计

私钥加密算法和哈希值加密算法是本设计中用到的加密方法。其中私钥加密中使用单个私钥来加密和解密数据。哈希算法将任意长度的二进制值映射为固定长度的较小二进制值,这个小的二进制值称为哈希值,哈希值是一段数据唯一且极其紧凑的数值表示形式。

在本系统中,数据在读卡系统和微控制器之间相互传输,微控制器接受由读卡系统发送来的用户数据。

数据在读卡系统中,首先对要传送的数据使用哈希算法将得到数据的哈希值,然后使用用户的自有私钥密码对数据和使用哈希算法得到的哈希值加密,然后传到微控制器中,再由微控制器对得到的数据进行解密,恢复传输的原始数据。本模块的设计主要使用的是数据加密算法的专业编程语言。功能是将IC卡模块中的数据进行加密处理,然后将加密的数据传出和对接受的数据进行解密处理。但由于两种语言的不一致性,通过微处理器读取的数据不能直接通过加密算法进行加密处理,所以在此程序中特意编写了与微控制器通讯的通讯端口,将微处理器得到的数据通过此端口传入数据的加密算法程序中,对数据进行加密处理后,再通过此端口将数据传到微处理器中,这样就方便两种语言进行数据的转换和传递。以下便是本模块软件设计的部分原始程序。

生成对称密钥:

Trip leDESCryp toServiceProvider TDES = new Trip leDESCryp2 toServiceProvider( ) ; TDES. Generate IV ( ) ; TDES. GenerateKey( ) ; 生成不对称密钥:

RSACryp toServiceProvider RSA = new RSACryp toServicePro2vider ( ) ; / /Save the public key information to an RSAParameters structure.

RSAParameters RSAKeyInfo =RSA. ExportParameters(false) ; 将不对称密钥存储在密钥容器中:

CspParameters cp = new CspParameters( ) ; cp. KeyContainerName =ContainerName;

RSACryp toServiceProvider rsa = new RSACryp toServicePro2 vider ( cp) ;

/ /得到保存的密钥

RSACryp toServiceProvider rsa = new RSACryp toServicePro2 vider ( cp) ;

rsa. ToXmlString( true) ; / /删除保存的密钥

rsa. PersistKeyInCsp = false; rsa. Clear ( ) ;

搜索更多关于: 1非接触式IC卡工作原理  的文档
1非接触式IC卡工作原理 .doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.diyifanwen.net/c3d4dv8irs93x5if1kn0k_1.html(转载请注明文章来源)
热门推荐
Copyright © 2012-2023 第一范文网 版权所有 免责声明 | 联系我们
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:xxxxxx 邮箱:xxxxxx@qq.com
渝ICP备2023013149号
Top