如何正确启动与 Mifare Ultralight C 的连接?

How to properly start a connection with a Mifare Ultralight C?

我曾尝试在 Mifare Ultralight C 上启动 3DES 协议。在产品数据表中,他们指定您必须通过发送命令 1A 来启动(我发现这个 post每个询问的人都被重定向到:Android: Authenticating with NXP MiFare Ultralight C).

所以我尝试在下面的代码中做类似的事情:

nfca.connect();
byte[] authData = new byte[] { 0x1A, 0x00};
encRndB = nfca.transceive(authData);

但是我在收发操作时总是报如下错误:

W/System.err: android.nfc.TagLostException: Tag was lost.

我是做错了什么还是我应该以其他方式做?

获得 TagLostException 响应命令可能意味着两件事:

  1. 与标签的通信实际中断(通过撕毁标签)或由于 reader 和标签之间的不良耦合。
  2. 标签不支持带有被动 NACK 的命令和 "responded"(即它没有响应生成超时)。如果 2 类标签收到它们不支持的命令,它们可能会这样做。

因此,第二种情况明确表明该标签不支持MIFARE Ultralight C认证命令。这意味着该标签可能不是 MIFARE Ultralight C 标签。您可以检查 Distinguish different types of MIFARE Ultralight 以获取对实际标签类型进行指纹识别的起点。