如何在DESFire EV1上的AuthenticateISO上计算IV

时间:2016-12-22 12:30:15

标签: android nfc mifare

我在验证后创建新IV时遇到了麻烦。即使有MIFARE文档,我也不确定我对这个概念的理解是否正确。卡上的数据已完全加密。

这些是我正在采取的步骤:

  • AuthenticateISO,零IV(0x1A,带3K3DES密钥)
  • 卡的响应(加密的RandA'): 08 48 CD A3 43 C5 00 FE 1D 78 D1 E5 A9 24 26 5A 91 00
  • 前8个字节应为CMAC并更新IV(?):08 48 CD A3 43 C5 00 FE
  • 创建3K3DES会话密钥:74 EF 23 87 10 E4 3B E6 BE C8 4C 41 74 03 08 A9 7F F3 FA 59 15 E4 C5 06
  • 调用getValue:90 6C 00 00 01 [FileID] 00
  • 来自卡片的回复:A2 3C CB 70 BE 4D D5 22 91 00
  • 使用会话密钥解密前8个字节并更新IV
  • 解密结果:7F 7D 80 F5 [CRC32]

在最后一步之后,前四个字节应该是值,最后四个CRC32。但是我肯定没有用IV做正确的事,因为结果不正确。它应该是0F A0 00 00 [CRC32]

任何人都可以指出我做错了吗?我一直试图解决这个问题至少2周而且无处可去。

1 个答案:

答案 0 :(得分:0)

您在自己的问题中添加了Android标记。我建议您使用免费的TapLinx SDK,并为MIFARE和其他一些恩智浦卡提供Java Level API。它使得与卡的通信变得更加容易,文档也很好。