關(guān)于IC卡密鑰理解和修改(簡易篇)
常用的IC卡由于結(jié)構(gòu)簡單,使用方便,價格低,越來越受到普通應(yīng)用的歡迎.本文主要描述普通IC卡的密鑰相關(guān)的知識.
關(guān)于IC卡的讀寫,必須使用IC卡讀寫器, 我們推薦使用NFC讀寫器YW-607HC或者IC卡讀卡器YW-605HA,不僅支持windows應(yīng)用程序,也支持chrome等瀏覽器web的BS架構(gòu)程序,同時支持安卓和linux的開發(fā),可以說是一款非常全面的讀卡器.
要了解IC卡的密鑰,要從IC卡的結(jié)構(gòu)說起.
1、卡內(nèi)存結(jié)構(gòu)
每張卡有16個扇區(qū),每個扇區(qū)有4個塊,每個塊有16字節(jié)。
所以卡內(nèi)存字節(jié)數(shù):16*4*16=1024字節(jié)。
2、 每個扇區(qū)的最后一塊為密鑰塊,用于保存密鑰,除了密鑰,不能用于保存其他數(shù)據(jù)。
第0扇區(qū)的第0塊用于保存卡號等信息,是只讀塊,所以也不能用于寫數(shù)據(jù)。
那么實際可用內(nèi)存為:(16*3-1)*16字節(jié)=752字節(jié)
3、密鑰塊的密鑰只能用于這個扇區(qū)的密鑰認(rèn)證,所以16個塊的密鑰都是互相獨立的。
4、密鑰塊的絕對塊地址:
0扇區(qū):塊3
1扇區(qū):塊7
2扇區(qū):塊11
...
15扇區(qū):塊63
5、密鑰塊數(shù)據(jù)結(jié)構(gòu)
每個塊16字節(jié),密鑰塊也不例外,密鑰塊的數(shù)據(jù)結(jié)構(gòu)如下:
A密鑰(6字節(jié))+密鑰控制字(4字節(jié))+B密鑰(6字節(jié)),例如
FFFFFFFFFFFF FF078069 FFFFFFFFFFFF .
6、如何修改密鑰
簡單的修改密鑰就是 將6字節(jié)的A密鑰,換成你所要設(shè)置的密鑰,密鑰控制字不變, B密鑰與A密鑰保持一致。
例如設(shè)置密鑰112233445566, 此時寫密鑰塊112233445566 FF078069 112233445566。寫密鑰塊api為YW_WriteaBlock, 即可將該扇區(qū)的密鑰修改為112233445566。
7、BS結(jié)構(gòu)下web程序如何修改密鑰,首先還是要組織密鑰塊的16字節(jié), 然后將這16字節(jié)寫入到密鑰塊中, 可以參考密鑰修改在線例程http://www.yxqyj.com/CloudReader/Sample8.html