public class MifareClassic
- Object
- TagTechnology
- 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
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.