无法使用Android中的正确密钥对mifare卡中的扇区进行身份验证

时间:2019-09-20 18:24:11

标签: android nfc rfid mifare contactless-smartcard

我有一个mifare经典的1K卡和自定义密钥。但是无法使用它进行读取/写入。需要帮助找到我的错误。

我已经确定了使用NXP Taginfo和Mifare Classic Tool读取/写入mifare卡的密钥。 它显示访问位为FF078000,密钥B为222222222222 现在,我使用密钥B从mifare经典1K卡中读取数据。下面是代码。

NXP Taginfo工具的输出为here

byte[] newkey = {(byte)0x00, (byte)0x33,(byte)0xBD,(byte)0x7A,(byte)0x03,(byte)0x8E};

boolean authB = taskTag.authenticateSectorWithKeyB(6, newkey);
Log.i("New Key"+ new BigInteger(newkey).toString(), "authB : " + authB) ;

但是authB返回false。怎么了?

非常感谢您的帮助。

Edit-1:

大量阅读后,我发现我可能错误地理解了访问条件。我认为我可能需要通过密钥A进行身份验证。但是根据访问条件,密钥A是不可读的。我在这里正确吗?

Edit-2

nxp标签editinfo / Mifare Classic Tool为什么能够读取密钥为222222222222的数据,但是我却不能?

1 个答案:

答案 0 :(得分:0)

我认为问题出在钥匙上。我必须使用222222222222作为密钥,而不是十六进制形式。因此将密钥更改为以下行即可解决此问题。

newkey = {(byte)0x22, (byte)0x22,(byte)0x22,(byte)0x22,(byte)0x22,(byte)0x22};