歡迎您訪問鄭州興邦電子股份有限公司官方網(wǎng)站!
阿里巴巴誠信通企業(yè)
全國咨詢熱線:40000-63966
興邦電子,中國水控機(jī)第一品牌

聯(lián)系興邦電子

全國咨詢熱線:40000-63966

售后:0371-55132951/55132952

工廠:河南省 鄭州市 高新區(qū)蓮花街電子電器產(chǎn)業(yè)園

IC卡技術(shù)講座之四 IC卡的編程和使用

文章出處:http://overnightmodel.com 作者:   人氣: 發(fā)表時(shí)間:2011年09月17日

[文章內(nèi)容簡介]:IC卡與其它卡片的區(qū)別主要是:IC 卡能在卡上存儲(chǔ)器中安全可靠地存儲(chǔ)大量有用信息,并且可以對(duì)數(shù)據(jù)提供多級(jí)安全保密措施.因此,為設(shè)計(jì)一個(gè)好的IC 卡應(yīng)用系統(tǒng),必須了解IC卡的數(shù)據(jù)結(jié)構(gòu)特點(diǎn).掌握IC卡的編程和讀寫方法.

 IC卡與其它卡片的區(qū)別主要是:IC 卡能在卡上存儲(chǔ)器中安全可靠地存儲(chǔ)大量有用信息,并且可以對(duì)數(shù)據(jù)提供多級(jí)安全保密措施.因此,為設(shè)計(jì)一個(gè)好的IC 卡應(yīng)用系統(tǒng),必須了解IC卡的數(shù)據(jù)結(jié)構(gòu)特點(diǎn).掌握IC卡的編程和讀寫方法.
    從使用角度來看,不管是普通存儲(chǔ)卡,邏輯加密卡,或智能CPU卡,卡上必定有:用于與其它應(yīng)用系統(tǒng)相區(qū)別的發(fā)行商代碼, 用于與本系統(tǒng)中其他用戶相區(qū)別的個(gè)人代碼,用于控制對(duì)卡上數(shù)據(jù)修改的擦除密碼,以及用于存放數(shù)據(jù)的存儲(chǔ)區(qū).由于IC 卡平時(shí)不與電源相接,要保證卡上存儲(chǔ)的數(shù)據(jù)不會(huì)丟失,只能使用只讀存儲(chǔ)器即ROM 型存儲(chǔ)器.因此卡上數(shù)據(jù)可以長期保存,一般數(shù)據(jù)可存放100年.又由于IC卡上數(shù)據(jù)在使用中要經(jīng)常修改,故一般應(yīng)該使用電可擦除可編程只讀存儲(chǔ)器,即EEPROM.一般IC 卡數(shù)據(jù)改寫次數(shù)大于100000次.
    目前的各種IC卡應(yīng)用系統(tǒng)中使用的IC卡主要是邏輯加密型卡. 這種卡帶有多級(jí)密碼保護(hù),比普通存儲(chǔ)卡安全性能強(qiáng)得多;同時(shí)又比智能CPU卡結(jié)構(gòu)簡單,不需要復(fù)雜的密碼計(jì)算過程,而且結(jié)構(gòu)簡單,編程使用方便.本講中以美國ATMEL公司的邏輯加密卡AT88SC1604為例,來說明對(duì)IC卡應(yīng)用系統(tǒng)中的IC 卡發(fā)行軟件和用戶應(yīng)用軟件的編程方法,以及IC卡寫入過程.
    一.邏輯存儲(chǔ)卡的數(shù)據(jù)結(jié)構(gòu)和編程特性
    AT88SC1604卡具有一個(gè)公用區(qū)和四個(gè)應(yīng)用數(shù)據(jù)區(qū).其數(shù)據(jù)結(jié)構(gòu)如附表所示.公用區(qū)內(nèi)有廠商代碼,發(fā)行商代碼,總密碼,密碼計(jì)數(shù)器等等.我們可以規(guī)劃和利用這些數(shù)據(jù)區(qū)對(duì)全卡基本特性進(jìn)行控制.應(yīng)用區(qū)共四個(gè),第個(gè)分區(qū)有自己的分區(qū)密碼, 擦除密碼,密碼計(jì)數(shù)器和讀寫控制位,用于對(duì)本區(qū)內(nèi)數(shù)據(jù)的寫入,讀出和修改進(jìn)行控制.應(yīng)用區(qū)其余部分是存儲(chǔ)數(shù)據(jù)的存儲(chǔ)單元.1604卡的第一分區(qū)存儲(chǔ)容量為9K位,其它三個(gè)分區(qū)數(shù)據(jù)存儲(chǔ)容量為2K位.連同公用區(qū)總存儲(chǔ)量為16K位.
    廠商代碼又叫制造商代碼,是由IC卡制造商在卡出廠時(shí)寫入.一般對(duì)某一發(fā)行商提供的一批卡提供同一代碼,以便與其它廠商的卡相區(qū)別. 寫入時(shí)將相應(yīng)保護(hù)熔絲1熔斷,此時(shí)IC卡開發(fā)者可以讀出廠商代碼,判斷其生產(chǎn)廠商,但不能修改它.
    發(fā)行商代碼:用于IC卡個(gè)人化,發(fā)卡時(shí)由系統(tǒng)軟件寫入, 用來表明此卡屬于哪一應(yīng)用系統(tǒng).例如:工商行發(fā)行的金融IC卡寫入的發(fā)行商代碼,表明了所屬的金融系統(tǒng).此卡使用時(shí),ATM機(jī)會(huì)自動(dòng)核實(shí)這一代碼.如果不正確,說明這不是本系統(tǒng)的卡,不能使用.發(fā)行商代碼受熔絲2控制,熔斷前,此密碼可修改,熔斷熔絲后.此密碼可讀出, 可核實(shí),但不能修改.
    IC卡上的熔絲是IC卡個(gè)人化標(biāo)記.除控制發(fā)行商代碼外,也控制整個(gè)卡上數(shù)據(jù)的讀寫.熔絲熔斷前,卡上數(shù)據(jù)讀寫受總密碼SC和讀寫控制位控制, 各分區(qū)密碼不起作用,此時(shí)可用IC卡讀寫器對(duì)卡進(jìn)行初始數(shù)據(jù)的規(guī)劃和寫入.熔絲熔斷后, 卡發(fā)給用戶個(gè)人,此時(shí)各分區(qū)數(shù)據(jù)操作不但受總密碼SC控制,而且受各分區(qū)密碼和擦除密碼和控制.
    總密碼SC一般用作用戶密碼,應(yīng)通過IC卡發(fā)行軟件中提供的用戶環(huán)境,由用戶自己設(shè)置并且寫到卡上.此密碼一旦寫入,不可讀出也不保留在系統(tǒng)中,只能核對(duì).用戶在以后使用IC卡時(shí),可能通過由應(yīng)用程序提供的密碼核對(duì)功能界面,由用戶本人鍵入加以核對(duì).密碼輸入正確,說明是合法用戶,可以對(duì)卡上數(shù)據(jù)進(jìn)行讀寫.密碼輸入錯(cuò)誤時(shí),密碼計(jì)數(shù)器SCAC減1.此外,在熔絲熔斷之前,總密碼還控制各分區(qū)密碼的讀寫.
密碼計(jì)數(shù)器SCAC用于統(tǒng)計(jì)用戶密碼核對(duì)次數(shù).輸入正確密碼時(shí),計(jì)數(shù)器清零( 即8位全置-1-).每輸錯(cuò)一次,計(jì)數(shù)器一位變?yōu)?0-,若八次輸入錯(cuò)誤,計(jì)數(shù)器各位全變?yōu)?0-時(shí),則此卡已作廢.
    擦除密碼控制對(duì)存儲(chǔ)器中已寫數(shù)據(jù)的擦除.由于EEPROM 在寫入數(shù)據(jù)時(shí)只能寫入到空白區(qū)(即各位為-1-),對(duì)已寫有數(shù)據(jù)的存儲(chǔ)區(qū)只能先探險(xiǎn),后寫入.每次要擦除一行信息.擦除密碼在卡發(fā)行時(shí)寫入,由應(yīng)用系統(tǒng)控制,只能核實(shí),不能讀出以防止非法破壞卡上已有的數(shù)據(jù).
    各分區(qū)有自己的分區(qū)密碼,以便實(shí)現(xiàn)一卡多用.分區(qū)密碼和分區(qū)擦除密碼控制本區(qū)數(shù)據(jù)的讀,寫,擦操作.例如用一個(gè)1604卡兼工作證,醫(yī)療證,工資卡和就餐卡.在不同場合使用此卡時(shí)讀寫器分別核實(shí)各分區(qū)密碼,僅操作本區(qū)數(shù)據(jù),而不影響其它分區(qū).
 
存儲(chǔ)分區(qū)
位地址
位數(shù)
字節(jié)地址
字節(jié)數(shù)
FZ
廠方代碼區(qū)
0-15
16
0-1
2
IZ
發(fā)行商代碼
16-79
64
2-9
8
SC
總密碼
80-95
16
10-11
2
SCAC
總密碼錯(cuò)誤計(jì)數(shù)器
96-103
8
12
1
CPZ
代碼保護(hù)區(qū)
104-167
64
13-20
8
SC1
一區(qū)密碼
168-183
16
21-22
2
S1AC
一區(qū)密碼錯(cuò)誤計(jì)數(shù)器
184-191
8
23
1
EZ1
一區(qū)擦除密碼
192-207
16
24-25
2
E1AC
一區(qū)擦除密碼錯(cuò)誤計(jì)數(shù)器
208-215
8
26
1
AZ1
應(yīng)用區(qū)一
216-9775
9650
27-1221
1195
SC2
二區(qū)密碼
9776-9791
16
1222-1223
2
EZ2
二區(qū)擦除密碼
9792-9807
16
1224-1225
2
E2AC
二區(qū)擦除密碼錯(cuò)誤計(jì)數(shù)器
9808-9815
8
1226
1
AZ2
應(yīng)用區(qū)二
9816-11863
2048
1227-1482
256
SC3
三區(qū)密碼
11864-11879
16
1483-1484
2
EZ3
三區(qū)擦除密碼
11880-11895
16
1485-1486
2
E3AC
三區(qū)擦除密碼錯(cuò)誤計(jì)數(shù)器
11896-11903
8
1487
1
AZ3
應(yīng)用區(qū)三
11904-13951
2048
1488-1743
256
SC4
四區(qū)密碼
13952-13967
16
1744-1745
2
EZ4
四區(qū)擦除密碼
13968-13983
16
1746-1747
2
E4AC
四區(qū)擦除密碼錯(cuò)誤計(jì)數(shù)器
13984-13991
8
1748
1
AZ4
應(yīng)用區(qū)四
13992-16039
2048
1749-2004
256
 
測試區(qū)
16040-16055
16
2005-2006
2
 
合計(jì)
 
16056
 
2007


    二.IC卡編程和使用流程
對(duì)IC卡的讀寫操作主要在發(fā)卡時(shí)和用戶持卡交費(fèi)及持卡消費(fèi)時(shí)時(shí)行. 發(fā)卡是卡片發(fā)行者根據(jù)用戶要求對(duì)空白卡的個(gè)人化過程. 這一過程由發(fā)卡單位的微機(jī)上運(yùn)行的發(fā)卡程序執(zhí)行,如銀行,工廠,機(jī)關(guān)等部.這一發(fā)卡程序也需IC卡開發(fā)人員根據(jù)上述經(jīng)構(gòu)特點(diǎn)進(jìn)行開發(fā)設(shè)計(jì).用戶持卡消費(fèi)則在商店P(guān)OS機(jī)或銀行ATM機(jī)上進(jìn)行,持卡交費(fèi)也需要在銀行或交費(fèi)處進(jìn)行.這一過程是讀出或修改卡上數(shù)據(jù)的過程,由IC卡用戶應(yīng)用程序在用戶終端上完成.此時(shí)用戶需與終端進(jìn)行交互式處理.這種用戶應(yīng)用程序也是IC卡開發(fā)人員進(jìn)行設(shè)計(jì)的.下面,綜合上一節(jié)討論的IC卡存儲(chǔ)結(jié)構(gòu)特點(diǎn), 說明在這兩種軟件中的操作過程.
    1.IC卡個(gè)人化操作流程
如前所述,此流程嵌在IC卡發(fā)卡軟件中執(zhí)行,可完成IC卡的人人化即初始數(shù)據(jù)錄入過程.首先系統(tǒng)核對(duì)IC卡的廠商代碼和卡型,正確時(shí),在空白卡上寫入發(fā)行商代碼,確定此卡為本系統(tǒng)有效卡.然后軟件應(yīng)提供交互式用戶界面, 讓用戶從鍵盤輸入自己的用戶密碼(SC).此密碼不應(yīng)由發(fā)行者保留和處理,而應(yīng)該通過調(diào)用密碼寫入函數(shù)而直接寫入卡上. 多分區(qū)中的分區(qū)密碼也可以通過給用戶提供的界面由用戶直接輸入.為了簡化密碼記憶要求,也可以采用根據(jù)統(tǒng)一用戶密碼經(jīng)一定算法來分別產(chǎn)生分區(qū)密碼并寫入卡上. 擦除密碼則是在個(gè)人化時(shí)由發(fā)行商也就是系統(tǒng)來產(chǎn)生并且入卡上的,供系統(tǒng)使用.在上述密碼寫入后, 軟件還應(yīng)提供用戶對(duì)密碼核實(shí)和再次修改的機(jī)會(huì).在確認(rèn)無誤后,軟件發(fā)出熔斷命令,熔斷熔絲2,完成IC卡的個(gè)人化進(jìn)程.隨后系統(tǒng)可對(duì)IC卡數(shù)據(jù)區(qū)需寫入的數(shù)據(jù)作初始寫入.
    2.IC卡用戶應(yīng)用軟件流程
如前所述,此流程嵌于各IC卡讀寫終端的用戶軟件中.每次涉及對(duì)IC卡操作時(shí)執(zhí)行此流程.一旦IC卡插入讀寫器,用戶軟件首先應(yīng)核對(duì)廠商代碼,發(fā)行商代碼,以確認(rèn)此卡的合法性.在確定是本系統(tǒng)中的有效卡后,進(jìn)入用戶密碼核對(duì)流程, 如果是無效卡,應(yīng)報(bào)警.接著在用戶密碼核對(duì)界面中對(duì)持卡人的合法性進(jìn)行鑒別. 要求持卡人鍵入用戶密碼,與卡上密碼核對(duì),無誤后可開始對(duì)卡讀寫. 如有分區(qū)密碼也要求用戶鍵入核實(shí).如果需對(duì)卡上已有數(shù)據(jù)進(jìn)行修改,則應(yīng)與系統(tǒng)中保留的探險(xiǎn)密碼進(jìn)行核對(duì). 正確時(shí)可先讀出卡上數(shù)據(jù)進(jìn)行修改運(yùn)算,再擦除相應(yīng)存儲(chǔ)區(qū),最后將修改后數(shù)據(jù)寫回該存儲(chǔ)區(qū).根據(jù)以上敘述,我們知道IC卡的合法性, 持卡人合法性和系統(tǒng)的合法性要相互確認(rèn).這些確認(rèn)和對(duì)IC卡的讀寫操作均需調(diào)用隨IC 卡讀寫器提供的函數(shù)庫中的函數(shù)來完成.
    三.IC卡應(yīng)用程序編程中使用的函數(shù)
如上所述:開發(fā)IC卡應(yīng)用系統(tǒng)的要點(diǎn)就是在一個(gè)數(shù)據(jù)庫管理軟件中,合理地嵌入和調(diào)用IC卡操作函數(shù),來完成諸如合法性驗(yàn)證和IC卡讀出,擦除和寫入等操作.為此,我們需要了解由讀寫器驅(qū)動(dòng)程序包中提供的IC止操作函數(shù)庫.這些函數(shù)可分為兩大類:在WINDOWS應(yīng)用環(huán)境中,提供了一組動(dòng)態(tài)鏈接庫函數(shù)(.DLL文件)供各種程序調(diào)用. 在DOS 環(huán)境中, 則針對(duì)不同語言提供了各自的函數(shù)庫. 這時(shí)限于篇幅僅舉FOXPROFOR DOS中使用的部分函數(shù)加以說明.詳細(xì)資料可查看相應(yīng)手冊(cè).
在FOXPRO程序執(zhí)行前,執(zhí)行命令:.SET LIBRARY TO MWIC.LIB
則FOXPRO會(huì)自動(dòng)登錄-MWIC.LIB-中的IC卡函數(shù),以后可以像使用FOXPRO 內(nèi)部函數(shù)一樣在程序使用中使用其中的接口函數(shù).而在編譯用戶程序?yàn)?EXE文件時(shí),又要將-MWIC.LIB-鏈入即可執(zhí)行.
MWIC.LIB中的接口函數(shù)可分兩類:
通用函數(shù):用于各種卡型的基本操作.
1.MW-INITCOM() 初始化串行通迅口.
2.MW-SETTYPE() 設(shè)置卡型.
3.MW-READ() 讀卡上的數(shù)據(jù).
4.MW-WRITE() 向卡上寫入數(shù)據(jù).
5.MW-ERASE() 擦除指定區(qū)域.
AT88SC1604卡專用函數(shù):僅用于這種卡型,因?yàn)椴煌ㄐ椭忻艽a的結(jié)構(gòu)和位置不同.
1.MW-PASS16() 檢驗(yàn)總密碼和擦除密碼
2.MW-CPASS16() 改變總密碼和擦除密碼
3.MW-RDECU16() 讀錯(cuò)誤計(jì)數(shù)值
4.MW-FUSE16() 燒斷熔絲

本文關(guān)鍵詞:IC卡技術(shù),IC卡編程,IC卡數(shù)據(jù)結(jié)構(gòu),,C卡技術(shù),IC卡編程,IC卡數(shù)據(jù)結(jié)構(gòu),邏,卡技術(shù),IC卡編程,IC卡數(shù)據(jù)結(jié)構(gòu),邏輯,技術(shù),IC卡編程,IC卡數(shù)據(jù)結(jié)構(gòu),邏輯加,術(shù),IC卡編程,IC卡數(shù)據(jù)結(jié)構(gòu),邏輯加密,,IC卡編程,IC卡數(shù)據(jù)結(jié)構(gòu),邏輯加密型,IC卡編程,IC卡數(shù)據(jù)結(jié)構(gòu),邏輯加密型卡,C卡編程,IC卡數(shù)據(jù)結(jié)構(gòu),邏輯加密型卡,,卡編程,IC卡數(shù)據(jù)結(jié)構(gòu),邏輯加密型卡,A,編程,IC卡數(shù)據(jù)結(jié)構(gòu),邏輯加密型卡,AT,程,IC卡數(shù)據(jù)結(jié)構(gòu),邏輯加密型卡,AT8,,IC卡數(shù)據(jù)結(jié)構(gòu),邏輯加密型卡,AT88,I
回到頂部