Github 地址:https://github.com/zifeiniu/CPUCardLib

项目需求及简介:

公司要求将用户相关的信息储存到射频卡中,之前项目使用的Mifare类型卡,只储存了用户的卡ID。Mifare S70容量也不够,遂使用CPU卡,FM1280,可达80KB的EEROM存储。
在CSDN上花积分下载了一个C#读取CPU卡的Demo,恶心的是不仅没有源码,而且互操作调用封装的DLL,还指定使用他们的读卡器,打广告还带赚我积分的。。
然后自己写了一个,开源一下,供大家改改。。
时间紧迫,从不懂,到写完这个也就两星期,等有空了继续写个读公交卡和银行卡。。。

介绍

已实现两种设备的接口
Pcsc,使用CAR122U读卡器(PcscCardReader)(https://github.com/danm-de/pcsc-sharp),只要实现PCSC驱动读卡器都可以使用。
德卡D3D8 读卡器 DeCardReader。
添加新读卡器,只需要实现接口ICPUCardReader即可。接口很简单,只要实现发送byte[],返回byte[]即可。

CpuCard类封常用操作命令。

目前只实现外部身份验证,没写秘钥操作相关。
创建二进制文件,写入文件,读取文件,记录日志等。

遇到的坑

最大二进制文件:

文档没有说明二进制文件最大可用多少大。创建一个大的二进制文件时没有报错,但是写入时报错。
检查文档:当P1 参数的最高位不为1时,P1 P2 为欲写入的文件偏移量,也就是说最大偏移量为7FFF,32767个字节,使用Unicode编码,最多可写16383个汉字

硬件资源释放问题:

像这种硬件读取完成的时候不知道什么时候释放资源合适,每次发送命令的时候打开,发送完成后关闭,这样不晓得慢是肯定了,而且可能会减少硬件寿命。
所以在设备层发送命令后不关闭,在卡操作业务层关闭。当下次发送命令时,自动检测设备未打开,则打开设备。

读取二进制文件问题:

因为写入的可以指定二进制文件的长度,但是读取二进制文件的时候,没找到如何获取二进制文件的长度。

发现读取会有提示如下
6Cxx 出错 Le长度错误,实际长度是xx。
则读取碰到6C后,修正此次读取数据长度,继续读取。

参考文件:

FMCOS专用技术手册 (使用复旦微电子的卡)

测试设备型号

ACR122U 德卡D8(即将实现)

测试CPU卡型号:

FM1216-137 FM1280

未实现功能

时间紧迫,目前没用使用加密,线路保护功能。

[开源]使用C# 对CPU卡基本操作封装的更多相关文章

  1. cpu卡,sam卡原理

    第一部分 CPU基础知识一.为什么用CPU卡IC卡从接口方式上分,可以分为接触式IC卡.非接触式IC卡及复合卡.从器件技术上分,可分为非加密存储卡.加密存储卡及CPU卡.非加密卡没有安全性,可以任意改 ...

  2. CPU卡

    CPU卡芯片通俗地讲就是指芯片内含有一个微处理器,它的功能相当于一台微型计算机.人们经常使用的集成电路卡(IC卡)上的金属片就是CPU卡芯片.CPU卡可适用于金融.保险.交警.政府行业等多个领域,具有 ...

  3. CPU卡详解【转】

    本文转载自:http://blog.csdn.net/logaa/article/details/7571805 第一部分 CPU基础知识 一.为什么用CPU卡 IC卡从接口方式上分,可以分为接触式I ...

  4. CPU卡与M1卡的区别

    简单来讲CPU卡比M1卡更加安全.扩展性更好.支持更多应用   CPU卡 M1 操作系统 带有COS系统 无COS系统 硬件加密模块 硬件DES运算模块 无实现算法的硬件加密模块 算法支持 标准DES ...

  5. CPU卡及NFC供应商

    1.苏州市民卡供应商 北京握奇数据/watchdata 2.苏州市民卡手表 苏州连爱/linklove公司 3.NFC供应商 英飞凌/Infelion, NXP,复旦微电子, 4.什么是CPU卡? C ...

  6. 公交CPU卡原理

    现在的公交卡已经开始逐步的采用IC卡(CPU卡?什么东东?),而且在国家交通部的推动下,开始了全国范围内的互联互通.以后,手里只用拿着一张卡,就可以走遍全国,而且如果支持在线充值的话,基本上就不用在车 ...

  7. CPU卡中T=0通讯协议的分析与实现

    IC卡的应用越来越广泛,从存储卡到逻辑加密卡,目前CPU卡已经逐渐在应用中占据主导地位.CPU卡根据通讯协议可分为两种:接触式和非接触式.接触式CPU卡主要采用两种通讯协议:T=0和T=1通讯协议.T ...

  8. CPU卡读写程序

    CPU卡也称智能卡,卡内的集成电路中带有微处理器CPU.存储单元(包括随机存储器RAM.程序存储器ROM以及芯片操作系统COS.装有COS的CPU卡相当于一台微型计算机,不仅具有数据存储功能,同时具有 ...

  9. IC卡、M1卡、CPU卡、SAM卡、PSAM卡的联系与区别

    一. 技术方面(非接触式IC卡)  1. 逻辑加密卡又叫存储卡,卡内的集成电路具有加密逻辑和EEPROM(电可擦除可编程只读存储器).  2. CPU卡又叫智能卡,卡内的集成电路包括中央处理器(CPU ...

随机推荐

  1. react native 中时间选择插件

    npm install react-native-datepicker --save import DatePicker from 'react-native-datepicker'; <Vie ...

  2. Writage让你的Word支持Markdown

    Writage 简单的执行后,word就可以在保存或打开的时候支持Markdown了!

  3. ThinkPHP—URL的访问以及各种方法的操作

    1.URL访问 ThinkPHP采用单一入口模式访问应用,对应用的所有请求都定向到应用的入口文件,系统会从URL参数中解析当前请求的模块.控制器和操作,下面是一个标准的URL访问格式: 第一种访问方式 ...

  4. webpack的按需引入配置

    ant.design插件需要less配合,yarn add babel-plugin-import,webpack4.0的babel文件已经配置到webpackconfig.js中,需要eject暴露 ...

  5. pythonのdjango 在控制台用log打印操作日志

    在Django项目的settings.py文件中,在最后复制粘贴如下代码: LOGGING = { 'version': 1, 'disable_existing_loggers': False, ' ...

  6. jmeter分布式测试教程和远程的代理机无法连接网络的问题解决方法

    一.Jmeter分布式执行原理: 1.Jmeter分布式测试时,选择其中一台作为控制机(Controller),其它机器做为代理机(Agent). 2.执行时,Controller会把脚本发送到每台A ...

  7. MailKit系列之附件分离

    本文主要谈谈实现思路,不提供完整代码 一.分离基础 1.MIME邮件的multipart类型 引用文章:https://blog.csdn.net/wangyu13476969128/article/ ...

  8. Harbor修改/data目录位置

    由于harbor默认数据存储位置在/data目录,且修改配置文件操作较为复杂,故这里使用软连接的方式将/data目录文件夹内容映射到/app目录下. ln -s /app/harbor/data/ d ...

  9. apache无法启动报错No space left on device

    apache无法启动报错No space left on device 故障现象:apache无法启动ipcs信号量很多 # service httpd startStarting httpd : [ ...

  10. 利用Owin解决CORS报错问题

    我的项目是vue + ASP.NET .在 Vue调试时,由于vue开启的调试用的服务器端口号 和 后台.NET程序的端口号是不同的,发送Ajax请求时,就会报错.这里就不提报错的原因了,网上有很多, ...