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