易智雄
摘要:本文介绍了ic卡的基础知识,说明了读写ic卡的编程方法,以工商企业ic卡系统为例介绍了ic卡管理系统的开发。 关键词:ic卡 开发 数据库 1. 前 言 ic卡在1974年诞生于法国,二十多年间,其应用领域不断扩大。国际标准化组织从1987年开始,相继制定和颁布了ic卡的国际标准-iso 7816-1,7816-2,7816-3,7816-4,为ic卡的进一步发展普及创造了条件。 ic卡是一种集成电路卡,它是随着半导体技术的发展以及社会对信息的安全性和存储容量要求的日益提高而应运而生的。它将具有微处理器及大容量存储器的集成电器芯片嵌装于塑料基片上,它的外形与普通的信用卡完全相同。按其内部封装的芯片的种类和功能可分为智能卡(smart card)和存储卡(memory card)。存储卡和智能卡的区别就在于存储器内不含微处理器(cpu),只具有一般的或带有逻辑控制的存储数据信息的功能。 ic卡保密性强,安全性高。它具有硬件安全策略,如果试图解密将造成卡的自锁或自毁。ic卡还有存储量大、使用方便、抗干扰强、网络要求不高等特点。正是由于以上优点,使得ic卡虽然诞生时间不长,其市场就已经遍布世界各地,而其应用领域也从最初的银行信用卡单一领域,渗透于包括工商、税务、社会保险、医疗、电信、交通、企业管理等领域。 为改善行政执法手段,实现工商企业信息的自动化处理、传递、共享和交流,1996年,国家工商局决定进行发行工商企业ic卡的试点工作,制定ic卡全国统一标准,将企业登记注册的基本资料、年检信息、违法违章情况写入ic卡中,由企业自已持有。因为ic卡具有不可伪造的特点,并且此卡全国通用,所以可以为企业提供具有防伪功能的“电子身份证照”,有效地防止伪造营业执照签订合同的经济诈骗犯罪活动,保护企业自身利益,同时也有利于工商行政管理、税务、银行、海关、技术监督等部门进行检查监管工作。 2. ic卡的读写程序开发 2.1 ic卡的开发环境 读或写ic卡所需的硬件配置为一台pc电脑,一台ic卡读写机。ic卡读写机分为内置式和外置式两种。外置式ic卡读写机外接220v电源,通过rs-232串口与pc机连接。内置式读写机,外形尺寸如软驱一样,安装于pc机软驱支架上,使用pc机箱电源。软件配置为dos、windows 95/98,windows nt等操作系统和ic卡读写机的接口函数库。ic卡读写机的制造厂家一般提供c、vb、delphi,foxpro、powerbuilder等语言的接口函数库。 2.2 ic卡的存储区及其密码 一般而言,ic卡的存储区分为若干个应用区,或称页。这些应用区的容量可相等也可不相等。整个ic卡有一个卡安全密码,称为主密码。必须在核对此密码正确后,才能读或写ic卡内的各应用区。每个应用区都有一个读密码和写密码。当读某应用区的存储内容时,必须验证读密码正确。而将内容写入某应用区时,必须验证读密码和写密码都正确。因此,如果某类ic卡内有四个应用区,则共有九个密码。一般地,对于有些重要应用区的密码,ic卡内设有对应的错误计数器,每核对密码错误一次,计数器自动加1,如果错误次数达到ic卡的限定值,例如8次,则此卡片以后都不能再使用了。当错误次数末达到限定值,而输入了正确的密码后,则错误计数器自动清零。 ic卡正式交付使用前,还必须进行熔断操作。ic卡经熔断后,读写密码只能进行验证,不能再读出来显示了。 2.3 ic卡读卡编程 要读出ic卡存储的内容,需要通过调用接口函数库提供的相应函数,依照下列步骤进行操作: 定义引用的外部函数,检查串口是否联好,检查是否插卡,给卡上电,核对卡安全密码,核对所选区的读密码,读卡,给卡下电。 下面以vb5.0 for win95/98为例给出示范程序的主要语句,为简单起见,我们假设每个检测都成功,以便继续下一步操作: public declare function com_select_port lib "hnic32.dll" (byval port as integer) as integer public declare function icc_power_on lib "hnic32.dll" (byval port as integer) as integer ...... public com,dd as integer public string1 as string com=com_select_port(1) dd=icc_testcard(com) dd=icc_power_on(com) dd=icc_password(com,"main",1) dd=icc_password(com,"unit1",2) dd=icc_read(com,string1,32,100) dd=icc_power_off(com) text1.text=string1 2.4 写ic卡写卡编程 写ic卡编程,依照以下步骤进行操作: 定义引用的外部函数,检查串口是否联好,检查是否插卡,给卡上电,初始化各区及其密码(或核对卡主安全密码,核对所选区的读密码,写密码),写卡、熔断、给卡下电。 程序参照读卡部分,个别有所不同,如: 写卡:dd=icc_write(com,“企业名称”,32,8) 熔断为:dd=blown_fuse(com) 3. 工商企业ic卡系统开发 工商企业ic卡系统是以ic卡技术为核心,以工商行政管理数据库和计算机网络为基础,面向工商行政管理部门的一项信息自动化处理工程。以广州市工商企业ic卡系统为例,我们建立起以一台双cpu 的dell机作服务器,12台微机作工作站的基于client/server模式的计算机网络系统,网络操作系统选用windows nt 4.0,数据库管理系统选用ms sql server 6.5/7.0,开发工具采用visual basic,visual foxpro等。工作站使用windows 95/98。 3.1 数据库设计 我们在sql server上建立了两个数据库:企业资料库和制卡数据库。企业数据库中建立内资企业、外资企业、私营企业、行业代码表、企业类型代码表等十多张表。制卡数据库中建立了制卡信息表、用户组表、用户表、用户权限表等表。其中制卡信息表存储制卡的信息,如制卡日期、数目、制卡人等。 在数据库中建立存储过程,供前台调用。下面是存储过程的一个例子,此过程用于取某卡号的信息。 if exists (select * from sysobjects where id = object_id('dbo.select_card_id') and sysstat & 0xf = 4) drop procedure dbo.select_card_id go create procedure select_card_id @card_id char(10) as select * from card_info where card_id=@card_id return 0 go grant execute on dbo.select_card_id to group_b go grant execute on dbo.select_card_id to group_d go 3.2 系统功能设计 我们前台使用vb,visual foxpro 编程,通过调后台存储过程和数据库实现各项功能。该系统设计了如下功能: 数据转换:将实时的foxpro 2.5企业资料数据库转到sql server中 制卡:通过注册号、企业名称等项目从后台数据库检索出企业将 此企业注册资料等信息写入ic卡。 读卡:核对密码后,读出ic卡信息并显示出来。 领卡:企业来领ic卡,读卡并在后台数据库作登记。 查卡:查某个企业是否已制卡、已领卡。 人员管理:设置操作人员权限。 统计:按企业类型、时间范围、操作人员等类别对制卡信息进行统计。 4. 结束语 ic卡的安全可靠性和大容量的特点,使其在应用中对计算机网络的要求不高,有利于在未联网的环境中使用,其应用领域也将越来越广。广州市工商企业ic卡系统的投入使用,完成了全市的内资、外资、私营企业的发行ic卡工作,加强了工商企业的监督管理力度,取得较好的社会效益。 |
|