我想在 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 AEli>
如果您发现有什么不对的地方,请指出来?我可能遇到哪些问题?
最佳答案
我知道回复有点晚了,但无论如何还是回答了 - 我自己昨天才获得正确的身份验证。 91 ae 代表身份验证错误。这意味着您在连接和加密后与 RandA 一起发送到的 RandB' 不符合 PICC (Ev1) 的预期。问题可能出在加密上。您可以用 EV1 数据表中的示例交叉检查您的加密逻辑吗?
希望它能有所帮助(如果您无法自己解决问题)
关于c# - 我如何在 desfire ev1 中进行 native 身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14319321/