考虑到密钥和访问位每个扇区占用 16 个字节,并且每个卡的唯一 ID (UID) 和制造商数据占用 16 个字节,MIFARE Classic 1K 卡中剩余的净内存空间是多少?
1 回答
MIFARE Classic 1K 由 16 个扇区组成。一个扇区由 4 个块组成(扇区尾部 + 3 个数据块)。每个块由 16 个字节组成。
这给了16 Sectors * 4 Blocks * 16 Bytes = 1024 Bytes
.
实际可用的数据区域取决于您要如何使用该卡:
每个扇区只使用一个密钥(密钥 A);您使用扇区尾部未使用的部分进行数据存储;您不使用 MIFARE 应用程序目录 (MAD):
- 第一个扇区的第一个块始终保留(UID/制造商数据),不能用于存储用户数据。
- 每个扇区尾的 6 个字节为密钥 A 保留。每个扇区尾的 3 个字节为访问条件保留。扇区尾部剩余的 7 个字节可用于存储用户数据。
因此,您可以存储
1 Sector * (2 Blocks * 16 Bytes + 1 Block * 7 Bytes) + 15 Blocks * (3 Blocks * 16 Bytes + 1 Block * 7 Bytes) = 864 Bytes
.每个扇区使用两个密钥(密钥 A 和密钥 B);您使用扇区尾部未使用的部分进行数据存储;您不使用 MIFARE 应用程序目录 (MAD):
- 每个扇区尾的 12 个字节为密钥 A 和 B 保留。每个扇区尾的 3 个字节为访问条件保留。扇区尾部的剩余字节可用于存储用户数据。
因此,您可以存储
1 Sector * (2 Blocks * 16 Bytes + 1 Block * 1 Byte) + 15 Blocks * (3 Blocks * 16 Bytes + 1 Block * 1 Byte) = 768 Bytes
.每个扇区使用两个密钥(密钥 A 和密钥 B);您不使用扇区尾部未使用的部分进行数据存储;您不使用 MIFARE 应用程序目录 (MAD):
因此,您可以存储
1 Sector * 2 Blocks * 16 Bytes + 15 Blocks * 3 Blocks * 16 Bytes = 752 Bytes
.每个扇区使用两个密钥(密钥 A 和密钥 B);您使用扇区尾部未使用的部分进行数据存储;您使用 MIFARE 应用程序目录 (MAD):
- 第一个扇区的数据块和通用字节(扇区尾中的剩余字节)是为 MAD 保留的。
- 可以使用其他扇区中的通用字节。
因此,您可以存储
15 Blocks * (3 Blocks * 16 Bytes + 1 Block * 1 Byte) = 735 Bytes
.每个扇区使用两个密钥(密钥 A 和密钥 B);您使用 NXP 的 NDEF 数据映射来传输 NDEF 消息:
- MAD 用于将扇区分配给 NDEF 应用程序。
- NDEF 数据只能存储在每个 NDEF 扇区的 3 个数据块中。
- NDEF 消息被包装在一个 NDEF TLV 结构中(1 个字节用于标记 0x03,三个字节表示长度超过 254 个字节)。
因此,您最多可以存储一个 NDEF 消息
15 Blocks * 3 Blocks * 16 Bytes - 4 bytes = 716 Bytes
。这样的 NDEF 消息的最大有效载荷可能为716 Bytes - 1 Byte - 1 Byte - 4 Bytes = 710 Bytes
(当使用具有未知 TNF 的 NDEF 记录时,1 个标头字节,1 个类型长度字节,4 个有效载荷长度字节)。