0

考虑到密钥和访问位每个扇区占用 16 个字节,并且每个卡的唯一 ID (UID) 和制造商数据占用 16 个字节,MIFARE Classic 1K 卡中剩余的净内存空间是多少?

4

1 回答 1

7

MIFARE Classic 1K 由 16 个扇区组成。一个扇区由 4 个块组成(扇区尾部 + 3 个数据块)。每个块由 16 个字节组成。

这给了16 Sectors * 4 Blocks * 16 Bytes = 1024 Bytes.

实际可用的数据区域取决于您要如何使用该卡:

  1. 每个扇区只使用一个密钥(密钥 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.

  2. 每个扇区使用两个密钥(密钥 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.

  3. 每个扇区使用两个密钥(密钥 A 和密钥 B);您不使用扇区尾部未使用的部分进行数据存储;您不使用 MIFARE 应用程序目录 (MAD):

    因此,您可以存储1 Sector * 2 Blocks * 16 Bytes + 15 Blocks * 3 Blocks * 16 Bytes = 752 Bytes.

  4. 每个扇区使用两个密钥(密钥 A 和密钥 B);您使用扇区尾部未使用的部分进行数据存储;您使用 MIFARE 应用程序目录 (MAD):

    • 第一个扇区的数据块和通用字节(扇区尾中的剩余字节)是为 MAD 保留的。
    • 可以使用其他扇区中的通用字节。

    因此,您可以存储15 Blocks * (3 Blocks * 16 Bytes + 1 Block * 1 Byte) = 735 Bytes.

  5. 每个扇区使用两个密钥(密钥 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 个有效载荷长度字节)。

于 2014-10-14T19:16:47.427 回答