我最近在使用Mifare经典1k智能卡。我使用制造商块(扇区0,块0)来识别卡片,因为Mifare经典卡的UID并不是唯一的。
我的应用程序场景是,我希望从智能卡中读取标识符,并将其与数据库进行比较,在数据库中,每个用户都有分配给他们的智能卡。这样用户就可以用他们的卡登录了。
现在我必须使用新的Mifare DESFire EV1 4k卡。这些卡是否也有类似于制造商块的东西,还是只有7字节的UID?用这个UID来识别卡安全吗?
发布于 2016-08-23 18:32:51
您可以期望正版 MIFARE DESFire EV1卡的7字节UID是唯一的。但是,请注意,DESFire EV1卡可以配置为使用随机的4字节UID.在这种情况下,每个RF激活都随机生成UID。这种卡的7字节UID只能在身份验证后使用GetCardUID
命令(命令代码0x51)获得。
但是,您应该知道(特别是考虑到您的用例),UID可以很容易地被克隆,并且不适合对卡片(或它们的用户)进行身份验证。另请参阅
如果您想要与MIFARE中的制造商块进行比较(即显示产品类型和生产批次的信息),则MIFARE DESFire卡有一个GetVersion
命令(命令代码0x60)。
最后,请注意,MIFARE经典卡的制造商块本身并没有提供比UID更多的唯一性。原因是制造商块的前4个字节是UID本身。下一个字节是UID上的校验和(因此对于具有相同UID的卡片,它的值是相同的)。接下来的3个字节是SAK和ATQA值,它们通常都是'88‘和'0400’(大多数?)经典1K卡。剩余的字节标识芯片类型(因此所有相同类型的卡片相同)和生产批次(因此至少每批相同)。
https://stackoverflow.com/questions/39079431
复制相似问题