pcsc-sharp Mifare 身份验证

pcsc-sharp Mifare Authentication

我正在使用 pcsc-sharp 库与 ACR122U Reader 进行通信,并向 MIFARE Classic 1k 卡发送 read/write 信息。

在熟悉库和 APDU 概念后,我可以在我的应用程序中使用卡片 UID 作为标识符。 现在我需要在卡上设置我自己的 ID。因此,我阅读了一些有关恩智浦 MIFARE 的手册(如 MF1S70YYX_V1) and also got some information about ISO 7816-4

我知道在访问卡内存以执行 read/write 操作之前需要进行身份验证,并且我知道标准密钥值。

我从 GitHub 和 运行 Mifare1kTest 示例下载了 pcsc-sharp 示例。我工作了,但是第 36 行的 card.LoadKey 失败了。 LoadKey 中 Apdu 命令的响应值是 SW1=99 SW2=0,我在任何文档中都找不到。注释掉 "throw new Exception" 部分使该示例有效。

我现在的问题是,哪些值是传递给 Card.LoadKey 的正确值,哪些是用于 Apdu 命令中参数的正确值。 "keynumber"(扇区编号 - Sector/Block 组合)是什么意思?如果示例有效,是否需要调用 LoadKey

您的问题很宽泛,但这些应该适合您。代码用注释解释

var loadKeySuccessful = card.LoadKey(
    KeyStructure.VolatileMemory,
    0x00, // first key slot
    new byte[] {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF} // key
);