如何在Android上对MIFARE Ultralight C进行身份验证

时间:2013-12-01 04:54:25

标签: android authentication mifare

我使用Android APP(NXP的NFC标签信息)来读取我的MIFARE Ultraglith C标签,它显示标签有NXP默认密钥“BREAKMEIFYOUCAN!”在页面0x2C到0x2F。但我仍然无法使用此密钥验证此标记。

    // NXP default key: BREAKMEIFYOUCAN! (16 bytes)
    byte[] mifareULCDefaultKey = { (byte) 0x49, (byte) 0x45,
            (byte) 0x4D, (byte) 0x4B, (byte) 0x41, (byte) 0x45,
            (byte) 0x52, (byte) 0x42, (byte) 0x21, (byte) 0x4E,
            (byte) 0x41, (byte) 0x43, (byte) 0x55, (byte) 0x4F,
            (byte) 0x59, (byte) 0x46 };

详细说明,我得到了以下结果:

第一个认证命令:1A00

第一验证命令的响应:AFCCF489BFB7B98605

ek(RndB):CCF489BFB7B98605

IV 1:0000000000000000

RndB:6183511C5B7EF046

RndA:6E262630E299F94F

RndB':83511C5B7EF04661

RndA || RndB':6E262630E299F94F83511C5B7EF04661

IV 2:CCF489BFB7B98605

ek(RndA || RndB'):AB7AF6C6E76675F52B9FF40021A8E2D6

第二验证命令:AFAB7AF6C6E76675F52B9FF40021A8E2D6

但是在发送第二个身份验证命令后,我仍然遇到“Transceive failed”IOException。在发送第二个验证命令之前,我确定标签仍然连接。

我在这个问题上花费了8个多小时,但仍然无法继续前进。任何人都可以提供帮助吗?

1 个答案:

答案 0 :(得分:0)

我遇到了同样的问题。问题是您使用了错误的Diversified Key进行身份验证。