好文档就是一把金锄头!
欢迎来到金锄头文库![会员中心]
电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

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

5页
  • 卖家[上传人]:宝路
  • 文档编号:7088524
  • 上传时间:2017-10-08
  • 文档格式:DOC
  • 文档大小:80.50KB
  • / 5 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • 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 ( ) ; 。

      点击阅读更多内容
      关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
      手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
      ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.