我想使MIFARE Classic 1k卡仅在向其写入一些初始数据后才能读取。我想我需要在将数据写入新卡后将键A和B更改为自定义设置。但是我该怎么做呢?这些键与访问位位于同一块中,因此我不能使用MifareClassic方法编写完整的块:

public void writeBlock(int blockIndex, byte[] data) throws IOException


因为它还会重写访问位。

最佳答案

确定您需要使用方法MifareClassic.writeBlock()。由于MIFARE Classic仅支持编写完整的块,因此您必须更新整个扇区尾部块。

由于MIFARE Classic没有免费的读取模式(即未经事先身份验证进行读取),因此您需要同时设置读取密钥(通常将密钥A用于此操作)和访问位(将密钥A配置为只读密钥) )。

您可以在此处找到有关可能的访问条件值和块格式的更多信息:


Locking mechanism of Mifare Classic 1K
MIFARE Classic: How to find to good Access Byte value
Set own authentication keys MiFare Classic with APDU C#

09-15 23:00