c# - 我如何在 desfire ev1 中进行 native 身份验证

标签 c# mifare

我想在 native 模式下使用 desfire 卡进行身份验证。 以下是我当前的步骤:

  • 我选择主应用程序(AID = 0×00 0×00 0×00)
  • 我收到卡的响应(“挑战”,randB)
  • 然后,在第二步中,我生成一个响应(randA);我将 8 字节 rand A 与解密并旋转的 8 字节 rand B 连接起来
  • 我对其进行加密,并将其发送回卡。

我收到 91 ae回答,我也不知道为什么。以下是消息序列:

  • 至卡:90 0A 00 00 01 00 00
  • 来自卡 5B 57 69 C7 CE 4B 16 7B 91 AF
  • 加密的 RandB = 5B 57 69 C7 CE 4B 16 7B
  • 破译的 RandB' = 17 8D 23 57 10 C9 32 D5
  • 一个字节 lshitf RandB' = 8D 23 57 10 C9 32 D5 17
  • 生成的兰特 A = 43 9D 17 8E 9A 5F BA 70
  • 将 Rand A 与 Rand B'' 连接起来 = 43 9D 17 8E 9A 5F BA 70 8D 23 57 10 C9 32 D5 17
  • 加密的 Rand A + Rand B'' = 9E ED DC 4F BC E7 BE BD 09 02 CF 99 F7 40 34 7B
  • 至卡:90 AF 00 00 10 43 9D 17 8E 9A 5F BA 70 8D 23 57 10 C9 32 D5 17 00
  • 来自卡:91 AE

如果您发现有什么不对的地方,请指出来?我可能遇到哪些问题?

最佳答案

我知道回复有点晚了,但无论如何还是回答了 - 我自己昨天才获得正确的身份验证。 91 ae 代表身份验证错误。这意味着您在连接和加密后与 RandA 一起发送到的 RandB' 不符合 PICC (Ev1) 的预期。问题可能出在加密上。您可以用 EV1 数据表中的示例交叉检查您的加密逻辑吗?

希望它能有所帮助(如果您无法自己解决问题)

关于c# - 我如何在 desfire ev1 中进行 native 身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14319321/

相关文章:

c# - ILMerge DLL : Assembly not merged in correctly, 仍列为外部引用

c# - 如何使用 unity 3d 获取谷歌访问 token ?

c# - 调用Windows API时CLR怎么比我快

c# - 在代码隐藏中动态引用控件(表)

python - 如何使用python语言读写mifare卡中的数据

c# - Windows 手机 : How to get list of installed applications & install/remove applications remotely

mifare - Taplinx : InvalidResponseLengthException: readData on desfire EV1 card

android - Android 上的 MIFARE Ultralight 仿真

android - 使用 Mifare Ultralight C 卡在 Android 上收发失败

java - 我的 NFC 扫描应用程序仅在 NFC 类型 2 时启动