public class MifareClassic

  1. Object
  2. TagTechnology
  3. MifareClassic

NXP MIFARE Classic 1K/4K technology view. Block-level read and write with key A or key B authentication.

Android-only – iOS Core NFC intentionally rejects MIFARE Classic. On iOS, Tag.getMifareClassic() returns null for the same physical tag and the caller should fall back to Tag.getNfcA() or fail gracefully.

The default factory keys are widely published; use them only on untransitioned demo / blank cards.

Constructors

public MifareClassic()

Methods

public static byte[] keyDefault()Default MIFARE Classic key A used by NXP shipping cards (FF FF FF FF FF FF).
public static byte[] keyMifareApplicationDirectory()MIFARE Application Directory (MAD) key A from NXP AN10787 (A0 A1 A2 A3 A4 A5).
public static byte[] keyNfcForum()NFC Forum key A for NDEF-formatted MIFARE Classic blocks (D3 F7 D3 F7 D3 F7).
public int getSectorCount()Total sectors on the tag (16 on Classic 1K, 40 on Classic 4K).
public int getBlockCount()Total addressable blocks (each 16 bytes).
public int sectorToBlock(int sectorIndex)First block index inside the given sector.
public AsyncResource<Boolean> authenticateSectorWithKeyA(int sector, byte[] key)Authenticates a sector with the given key A. Required before any read/write on the sector.
public AsyncResource<Boolean> authenticateSectorWithKeyB(int sector, byte[] key)Authenticates a sector with the given key B.
public AsyncResource<byte[]> readBlock(int block)Reads a single 16-byte data block.
public AsyncResource<Boolean> writeBlock(int block, byte[] data)Writes the 16-byte payload to the given data block.
public final TagType getType()The technology variant this view represents.

Inherited methods

Constructor details

MifareClassic

public MifareClassic()

Method details

keyDefault

public static byte[] keyDefault()
Default MIFARE Classic key A used by NXP shipping cards (FF FF FF FF FF FF). Returns a fresh defensive copy.

keyMifareApplicationDirectory

public static byte[] keyMifareApplicationDirectory()
MIFARE Application Directory (MAD) key A from NXP AN10787 (A0 A1 A2 A3 A4 A5). Returns a fresh defensive copy.

keyNfcForum

public static byte[] keyNfcForum()
NFC Forum key A for NDEF-formatted MIFARE Classic blocks (D3 F7 D3 F7 D3 F7). Returns a fresh defensive copy.

getSectorCount

public int getSectorCount()
Total sectors on the tag (16 on Classic 1K, 40 on Classic 4K).

getBlockCount

public int getBlockCount()
Total addressable blocks (each 16 bytes).

sectorToBlock

public int sectorToBlock(int sectorIndex)
First block index inside the given sector. Sectors 0-31 contain 4 blocks each; sectors 32-39 (4K cards only) contain 16 blocks.

authenticateSectorWithKeyA

public AsyncResource<Boolean> authenticateSectorWithKeyA(int sector, byte[] key)
Authenticates a sector with the given key A. Required before any read/write on the sector. Fails with NfcError.IO_ERROR when the key is wrong.

authenticateSectorWithKeyB

public AsyncResource<Boolean> authenticateSectorWithKeyB(int sector, byte[] key)
Authenticates a sector with the given key B.

readBlock

public AsyncResource<byte[]> readBlock(int block)
Reads a single 16-byte data block. The sector containing the block must have been authenticated first.

writeBlock

public AsyncResource<Boolean> writeBlock(int block, byte[] data)
Writes the 16-byte payload to the given data block. Fails with NfcError.READ_ONLY when access bits forbid the write.

getType

public final TagType getType()
The technology variant this view represents.