❶ CPU卡如何建立文件
一般来说,对存储卡和逻辑加密卡操作,使用接触式IC卡通用读写器;对CPU卡使用CPU卡读写器。所谓“通用读卡器”是指它可以对大多数流行的存储卡和逻辑加密卡操作。而CPU卡由于有ISO/IEC 7816.3/4的规范,其通讯协议、命令格式都是兼容的,被看作是一种卡。当然,也有将“通用读卡器”与CPU读卡器二合一的真正的接触式通用读卡器。
PC端IC卡应用软件编程,要点是了解卡的数据结构和调用读卡器函数。在这方面,非CPU卡与CPU卡有不小差别。
首先,非CPU卡,你必须熟悉卡的存储结构,哪里是制造商区,哪里是密码区,哪里是数据控制区,哪里是数据区(应用区)……;而CPU卡,你不必关心数据的地址,却要关注文件系统的结构:主文件(MF,相当于DOS文件系统的根目录)、专用文件(DF,相当于DOS文件系统的目录,可以有多层)、基本文件(EF,相当于DOS文件系统的文件)。
CPU卡的基本文件类型虽然只有透明(二进制)文件、(定长与不定长)线性记录文件和循环记录文件三类,但由于COS内部控制的需要,派生出一些特定的“变种”——复位应答文件、口令文件、密钥文件、DIR文件、SFI文件……。这些都需要熟悉。
纯粹的存储卡是可以自由读取的;非CPU逻辑加密卡的访问控制,需要掌握特定的卡的口令控制、认证控制、特定的数据控制标志字节和卡的熔丝(一种卡上这些控制不一定都有)。
而CPU卡的访问控制,是在建立文件时定义的,读、写、更改分别是否需要认证,用哪个密钥,是否需要口令,是否需要MAC验证等等。需要说明的是,创建文件命令的格式是随COS而不同的。所以,你必须熟读他的COS手册。
现在说说卡操作。非CPU卡的访问一般是通过调用函数直接完成的,大不了需要熟悉一下调用参数。而CPU卡除了设备命令(测卡、上下电、选卡座等)和卡的复位命令以外,所有卡命令都是通过一个通用的命令函数执行的,所以你需要熟悉COS手册的命令。
COS的卡操作命令有统一的格式:CLA(命令类别Class)、INS(命令指令Instruction)、P1(参数1)、P2(参数2)、Lc(命令数据域Data长度)、Data和Le(应答数据域长度)。命令域中除了Data,都是1字节十六进制数。数据域则是十六进制数串,可以是二进制数、BCD码或文字的ASCII码等等。这有点像汇编语言。调用命令函数时,把命令串代入对应参数即可。
最后,给初学者一点建议。
1. 最权威的书:王爱英的《智能卡技术 —IC卡—》第二版 清华大学出版社 29元
2. 初学非CPU卡编程,要仔细阅读卡的技术说明和读卡器函数的调用说明及例子。特别要注意一些细节。例如,有人练习调用函数读写4428卡时,误写了密码区,使得自己也不知道密码了,最终就是验证密码超过允许次数而毁卡。还有一个初学者,试用4442卡密码验证,没有注意到更改密码后要下电再上电使卡复位,造成任何密码都可以通过的假象,多次改、试之后,自己也不知道最终密码了,后果是拔卡后再插卡多次不能通过密码验证而毁卡。初学者毁卡好象学骑自行车摔跤一样,难免。但是细心的人走的弯路少些。
3. 由非CPU卡转CPU卡编程,要熟悉文件系统的概念。另外就是注意练习时不要锁死初始化功能。这样,无论是锁应用还是锁卡,都可以重新初始化成新卡。
4. 学习IC卡编程,要充分利用好读卡器厂家提供的演示程序。例如,在编程校验密码或认证失败的时候,最好回到演示程序校验或验证,使其成功后将错误计数器复位,以免毁卡。编程中出现疑问时,也最好用演示程序验证一下,判断是否函数或读卡器本身有问题,少走弯路。
5. 解决疑难最方便有效的方法当然是“问”。最好能有老鸟做技术支持。所以你一定要选择能提供技术支持的公司的读卡器。要是卡和读卡器都出自一家就更方便了。