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