MifareClassic卡自定义keyA跟keyB
MifareClassic卡自定义keyA和keyB请先阅读《读写MifareClassic协议的NFC卡》一文了解MifareClassic卡的相关
MifareClassic卡自定义keyA和keyB
请先阅读《读写MifareClassic协议的NFC卡》一文了解MifareClassic卡的相关知识。
根据MifareClassic卡的的相关协议,如果要自定义自己的keyA和keyB,以使自己写入的到卡中的信息只有知道key值的人才能读写,必须往要操作的区中的Block 3即Trailer块写入数据。下图是Block 3的数据示例:

如图,我们只需定义要写入到Trailer块及keyA、keyB的数据分别为:
[java] view plaincopy
- byte authBlockData[] = { (byte) 0xAA, (byte) 0xAA, (byte) 0xAA,
- (byte) 0xAA, (byte) 0xAA, (byte) 0xAA, (byte)0xFF, (byte)0x07, (byte) 0x80,
- (byte)0x69, (byte) 0xBB, (byte) 0xBB, (byte) 0xBB, (byte) 0xBB,
- (byte) 0xBB, (byte) 0xBB };
- byte keyA[] = { (byte) 0xAA, (byte) 0xAA, (byte) 0xAA, (byte) 0xAA,
- (byte) 0xAA, (byte) 0xAA };
- byte keyB[] = { (byte) 0xBB, (byte) 0xBB, (byte) 0xBB, (byte) 0xBB,
- (byte) 0xBB, (byte) 0xBB };
第一次往Block 3中写数据时仍然使用MifareClassic.KEY_DEFAULT,写入完成后则使用新定义的keyA和keyB进入数据的写入和读取了。至此,实现了MifareClassic卡自定义keyA和keyB功能。
相关可执行程序:http://download.csdn.net/detail/viviwen123/5131034。源码只实现了对MifareClassic卡的读写功能,未进行keyA和keyB的修改,读者根据本文稍做修改即可实现此功能。