java mifare_java – 使用SCL010获取Mifare Ultralight的UID

您实际使用的命令不是您所期望的.

使用此阅读器获取UID /序列号/枚举标识符的正确命令APDU是:

+------+------+------+------+------+

| CLA | INS | P1 | P2 | Le |

+------+------+------+------+------+

| 0xFF | 0xCA | 0x00 | 0x00 | 0x00 |

+------+------+------+------+------+

但是,您使用的构造函数定义为:

public CommandAPDU(int cla, int ins, int p1, int p2, int ne);

所以

new CommandAPDU(0xFF, 0xCA, 0x00, 0x00, 0x00)

您正在创建具有以下参数的C-APDU:CLA = 0xFF,INS = 0xCA,P1 = 0x00,P2 = 0x00.到目前为止,这与上面的APDU相同.但最后一个参数是Ne = 0x00. Ne = 0表示预期响应字节数为零(而Le = 0表示预期响应字节数为(最多)256).

这样可以有效地创建以下Case-1 APDU:

+------+------+------+------+

| CLA | INS | P1 | P2 |

+------+------+------+------+

| 0xFF | 0xCA | 0x00 | 0x00 |

+------+------+------+------+

因此,最多您将获得2字节状态字作为响应(指示成功使用0x90 0x00或指示错误,状态代码如0x6X 0xXX).

所以你可以使用字节数组来形成你的APDU:

new CommandAPDU(new byte[] { (byte)0xFF, (byte)0xCA, (byte)0x00, (byte)0x00, (byte)0x00 } )

或者您可以为Ne指定适当的值:

new CommandAPDU(0xFF, 0xCA, 0x00, 0x00, 256)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值