ACR122U的MIFARE Classic 1K加载验证密钥失败

时间:2016-03-22 05:12:18

标签: nfc mifare apdu pcsc acr122

我使用的是ACR122U NFC读写器和MIFARE Classic 1K卡。要加载MIFARE卡的身份验证密钥,请使用以下APDU命令:

FF 82 20 00 06 FF FF FF FF FF FF

读者回复90 00(表示成功)。但是,在另一台PC上我有相同的读写器和相同的标签,但我收到响应代码63 00,这意味着操作失败。

当我阅读ACR122U文档时,它将命令声明为

FF 82 00 00 06 <KEY>

此字节在文档中命名为密钥结构,其值为00。这个字节可以成为这个问题的根源吗?

任何人都可以帮助我并解释密钥结构字节的值吗?

2 个答案:

答案 0 :(得分:1)

我很惊讶您发现一个支持密钥结构(P1)设置为0x20的ACR122U。 API manual of the reader(参见5.1 加载验证密钥)清楚地表明保留了除0x00以外的值(即不得使用)。这意味着ACR122U仅支持易失性存储器中的卡密钥(即卡的认证密钥)(即,当拔下阅读器时,密钥将从内存中清除)。

您可以在PC/SC specification中找到密钥结构(P1)字节的定义(在第3部分中.PC连接接口设备的要求):

  • 位7:该位指示在此命令中传输的密钥是卡密钥(&#39; 0&#39;)还是读卡器密钥(&#39; 1&#39;)。读取器密钥是用于在LOAD KEYS命令中传输期间加密卡密钥的密钥(参见第6位)。
  • 位6:此命令中传输的密钥使用读取器密钥以纯文本(&#39; 0&#39;)或加密(&#39; 1&#39;)传输(请参阅位3..0 )。
  • 位5:该位指示传输的密钥是否应存储在易失性(&#39; 0&#39;)或非易失性(&#39; 1&#39;)存储器中。
  • 位4:保留并始终设置为&#39; 0&#39;。
  • 位3..0:如果设置了第6位,则用于加密传输密钥的读卡器密钥号。

答案 1 :(得分:0)

加载身份验证密钥

找到附图

load key Image

密钥结构:00键加载到阅读器易失性存储器中    密钥号码:阅读器上的00~01键位置           键:加载到阅读器中的键值,例如{FF FF FF FF FF FF}

响应:90 00操作成功完成              :63 00操作失败