射頻卡讀寫器裝載密碼函數的正確使用
文章出處:http://hz-huyue.com 作者:中國一卡通網 收編 人氣: 發表時間:2011年10月17日
本文以最常用的MIFARE ONE卡來說明。該卡有16個扇區,每個扇區都有獨立的密碼,包括A密碼和B密碼。如果需要對某一扇區操作就必須對該扇區進行密碼校驗。密碼校驗的方式分兩種。下面將分別說明。
一種是常規的被大多數讀卡器廠商所采用的方式。首先將要校驗的扇區密碼裝載到讀寫器的保密存儲區中,每個扇區對應不同的保密存儲區。這樣在校驗卡的時候,讀寫器會根據扇區號來和讀寫器中對應的保密存儲區中的密碼進行校驗,如果密碼相同就通過校驗,可以 進行以后的讀寫工作。這種方式的特點是密碼裝載到讀寫器的保密存儲區后將一直保留,斷電后也不會丟失。用戶如果不需要改變密碼的話,就不用調用dc_load_key函數再次下載密碼。有些程序代碼在尋卡的循環中包含dc_load_key函數,這樣是不必要的。讀寫器保密存儲區是系統模塊中的EEPROM,在PHILIPS的資料中說明該區域可擦寫的次數最少在10萬次以上,但該區域還是有次數限制的,如果長期的執行裝載密碼操作將減少讀寫器保密存儲區的使用壽命。
第二種是當需要經常對不同密碼的卡進行核對而使用的方式。該方式不用提前將密碼裝載到讀寫器的保密存儲區中。只需要在校驗卡的時候同時將密碼傳遞給讀寫器就可以進行校驗。對應的函數聲明如下:
int dc_authentication_pass(int icdev,unsigned char _Mode,unsigned char Addr,unsigned char *passbuff)
功 能:核對密碼函數,用此函數時,可以不用執行dc_load_key()函數
參 數:icdev: dc_init返回的設備描述符
_Mode:密碼驗證模式0—KEYA 4—KEYB
Addr:要驗證密碼的扇區號
passbuff:6字節密碼字符串
返 回:成功返回0
這種方式大多是在卡片采用一卡一密的時候使用,可以避免頻繁的對讀寫器的保密存儲區操作。該函數在RD800M/RD900M 7.1版本中被支持。
除了上述的兩種方式以外還有根據讀寫器的SAM安全模塊產生密鑰進行卡片校驗的方式??梢愿鶕蛻舨煌腟AM安全模塊和特殊要求來定制使用方式,以用于安全保密性要求很高的系統中。