IC卡讀卡器開發指南
摘要
IC卡讀卡器開發指南
IC卡讀卡器開發指南
1 概述
随著(zhe)社會的發展和科技的進步,IC卡應用越來越廣泛。會員卡,學生卡,社保卡,公交卡,金融卡等已得到大量的應用,可以說IC卡在我們身邊無處不在。IC卡的普及一方面取決於各個組織的大力推廣,另外也得力於無數程序員的辛苦工作,将IC卡讀卡器和IC卡融合到各個系統中。本文将著(zhe)重介紹IC卡讀卡器在實際應用中編程的流程和步驟,使得IC卡的開發簡單明瞭(le),更縮短我們的開發周期。
2 非接觸IC卡介紹
非接觸IC卡是IC卡中的一種,由於(yú)非接觸IC卡沒有物理磨損,壽命更長(zhǎng),價格更便宜,使得非接觸IC卡的使用越來越多,最具有代表性的非接觸IC卡就是M1卡及其兼容卡。下面将以M1卡爲例,來介紹M1的内部結構。
M1卡有1k和4k之分,内部結(jié)構(gòu)基本差不多,以M1卡1K爲例:
該(gāi)IC卡共有16個(gè)扇區,每個(gè)扇區4個(gè)塊,每塊16字節,所以總共有字節數16*4*16=1024個(gè)字節。
|
第15扇區 |
第63塊 |
密鑰塊 |
|
第62塊 |
數據塊 | |
|
第61塊 |
數據塊 | |
|
第60塊 |
數據塊 | |
|
|
.
.
. |
|
|
第1扇區 |
第7塊 |
密鑰塊 |
|
第6塊 |
數據塊 | |
|
第5塊 |
數據塊 | |
|
第4塊 |
數據塊 | |
|
第0扇區 |
第3塊 |
密鑰塊 |
|
第2塊 |
數據塊 | |
|
第1塊 |
數據塊 | |
|
第0塊 |
存卡号,隻讀 |
每個扇區最後一塊用來保存密鑰,故不能當(dāng)作數據來使用。第0塊由於(yú)是隻讀的,也不能用來存取數據,所以此卡實際可用的内存爲(16*3-1)*16= 752字節。
在讀(dú)寫某個數據塊之前,必須首先進行密鑰認證,如果密鑰認證失敗(bài),則不能讀(dú)寫,隻有認證成功,方可進行讀(dú)寫等操作。每個扇區共用一組密鑰,所以一個扇區隻要認證成功一次,就可以讀(dú)寫此扇區中的四個數據塊。
每個(gè)可用的數據塊可以初始化爲整形值或者原始數據。原始數據可以當(dāng)作普通内存使用,整形值可以當(dāng)作錢包等具有加減功能數字使用。
3 IC卡讀卡器介紹
IC卡讀(dú)卡器的種類繁多,這裏以性價(jià)比較高的YW-605系列讀(dú)卡器來作介紹。
YW-605系列讀(dú)卡器具有多種接口,外觀簡潔,美觀大方,可以讀(dú)寫市面上大部分非接觸(chù)IC卡。
4 IC卡讀卡器API函數介紹
YW-605系列讀卡器提供二次開發功能,用戶可以在我們的DLL的基礎(chǔ)上調用相應的函數開發應用程序,我們提供Delphi,C++Builder,VB,VC等的調用例程和相關函數聲明單(dān)元,或者按照讀卡器的通信協議直接開發應用程序。
庫(kù)函數,C++語言版,其它語言見(jiàn)相應的函數聲明文件。
函數原形:int stdcall YW_GetDLLVersion(void);
參數列表:無
返 回 值:大於(yú)0爲版本号,小於(yú)0爲錯(cuò)誤
2. DES加解密函數
函數原形:int stdcall DES(unsigned char cModel, unsigned char *pkey, unsigned char *in, unsigned char *out);
參數列表:
|
參數 |
類型 |
含義 |
|
cModel |
unsigned char |
加解密方向,0爲(wèi)加密,1爲(wèi)解密 |
|
pkey |
unsigned char* |
加解密秘鑰,8個字節 |
|
in |
unsigned char* |
原始數據,8個字節 |
|
out |
unsigned char* |
加解密後(hòu)的數據,8個(gè)字節 |
返 回 值:無意義
3. 3DES加解密函數
函數原形:int stdcall DES3(unsigned char cModel, unsigned char *pKey, unsigned char *In, unsigned char *Out);
參數列表:
|
參數 |
類型 |
含義 |
|
cModel |
unsigned char |
加解密方向,0爲(wèi)加密,1爲(wèi)解密 |
|
pkey |
unsigned char* |
加解密秘鑰,16個(gè)字節(jié) |
|
in |
unsigned char* |
原始數據,8個字節 |
|
out |
unsigned char* |
加解密後(hòu)的數據,8個(gè)字節 |
返 回 值:無意義
函數原形:int stdcall DES3_CBC(unsigned char cModel, unsigned char *pKey,unsigned char *In, unsigned char *Out, unsigned char *pIV);
參數列表:
|
參數 |
類型 |
含義 |
|
cModel |
unsigned char |
加解密方向,0爲(wèi)加密,1爲(wèi)解密 |
|
pkey |
unsigned char* |
加解密秘鑰,16個字節 |
|
in |
unsigned char* |
原始數據,8個字節 |
|
out |
unsigned char* |
加解密後(hòu)的數據,8個(gè)字節 |
|
pIV |
unsigned char* |
加解密向量,8個字節 |
返 回 值:無意義
函數原形:int stdcall YW_ComInitial(int PortIndex, int Baud);
參數列表:
|
參數 |
類型 |
含義 |
|
PortIndex |
int |
串口号,1--255 |
|
Baud |
int |
通信波特率,2400—115200,默認(rèn)爲(wèi)19200 |
返 回 值:1成功,0失敗(bài)
函數原形:int stdcall YW_ComFree(void);
參數列表:無
返 回 值:1成功,0失敗(bài)
7. USB無驅讀寫器,初始化USB
函數原形:int stdcall YW_USBHIDInitial(void);
參數列表:無
返 回 值:1成功,0失敗(bài)
8. USB無驅讀寫器,釋放USB
函數原形:int stdcall YW_USBHIDFree(void);
參數列表:無
返 回 值:1成功,0失敗(bài)
函數原形:int stdcall YW_ComNewBound(int ReaderID ,int NewBound);
參數列表:
|
參數 |
類型 |
含義 |
|
ReaderID |
int |
所要獲取的設備(bèi)标示ID,範(fàn)圍0x0000-0xFFFF,如果未知,則ReaderID=0 |
|
NewBound |
int |
新的波特率
0x01->9600bps
0x02->14400bps
0x03->19200bps
0x04->28800bps
0x05->38400bps
0x06->57600bps
0x07->115200bps |
返 回 值:1成功,0失敗(bài)
函數原形:int stdcall YW_SetReaderID(int OldID, int NewID);
參數列表:
|
參數 |
類型 |
含義 |
|
OldID |
int |
老的設備(bèi)标示ID,範(fàn)圍0x0000-0xFFFF |
|
NewID |
int |
修改成新的設備(bèi)标示ID,範(fàn)圍0x0000-0xFFFF |
返 回 值:1成功,0失敗(bài)
函數原形:int stdcall YW_GetReaderID(int ReaderID);
參數列表:
|
參數 |
類型 |
含義 |
|
ReaderID |
int |
所要獲取的設備(bèi)标示ID,範(fàn)圍0x0000-0xFFFF,如果未知,則ReaderID=0 |
返 回 值:>=0成功,並且爲所獲取的設備标示,<0失敗
函數原形:int stdcall YW_GetReaderVersion(int ReaderID);
參數列表:
|
參數 |
類型 |
含義 |
|
ReaderID |
int |
所要獲取的設備(bèi)标示ID,範(fàn)圍0x0000-0xFFFF,如果未知,則ReaderID=0 |
返 回 值:大於(yú)0爲版本号,小於(yú)0爲錯(cuò)誤
函數原形:int stdcall YW_GetReaderSerial(int ReaderID, char *ReaderSerial);
參
相關(guān)聯的産(chǎn)品
YW-605RA
串口射頻卡RFID讀寫器
USB免驅動(dòng)IC卡讀(dú)卡器,支持Windows,安卓和linux,型号YW-605RA
高頻(pín)RFID讀(dú)寫器,Linux讀(dú)卡器
SDT-HA
USB免驅IC卡讀卡器發卡器SDT-HA
價(jià)格低的射頻卡讀(dú)寫器,IC卡讀(dú)卡器SDT-HA
高頻(pín)RFID讀(dú)寫器,WEB讀(dú)卡器,安卓讀(dú)卡器,Linux讀(dú)卡器
YW-605HA
USB免驅IC卡讀卡器發卡器YW-605HA
USB免驅動(dòng)IC卡讀(dú)卡器,支持web,安卓和linux,型号YW-605HA
高頻(pín)RFID讀(dú)寫器,WEB讀(dú)卡器,安卓讀(dú)卡器,Linux讀(dú)卡器
YW-607HC
NFC讀寫器YW-607HC
支持web浏覽(lǎn)器,windows,安卓,linux的NFC讀(dú)寫器YW-607HC
高頻(pín)RFID讀(dú)寫器,WEB讀(dú)卡器,安卓讀(dú)卡器,Linux讀(dú)卡器

