IC卡读卡器装载密码函数细节
在使用IC卡过程中我们常见的就是MIFARE ONE卡。MIFARE ONE卡有16个扇区,每个扇区都有独立的密码,包括A密码和B密码。如果需要对某一扇区操作就必须对该扇区进行密码校验。密码校验的方式分两种。
第一种、首先将要校验的扇区密码装载到读写器的保密存储区 中,每个扇区对应不同的保密存储区。这样在校验卡的时候,IC卡读写器会根据扇区号来和读写器中对应的保密存储区中的密码进行校验,如果密码相同就通过校验,可 以 进行以后的读写工作。这种方式的特点是密码装载到读写器的保密存储区后将一直保留,断电后也不会丢失。用户如果不需要改变密码的话,就不用调用 dc_load_key函数再次下载密码。有些程序代码在寻卡的循环中包含dc_load_key函数,这样是不必要的。IC卡读写器保密存储区是系统模块中的 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安全模块产生密钥进行卡片校验的方式。可以根据客户不同的SAM安全模块和特殊要求来定制使用方式,以用于安全保密性要求很高的系统中。