-1

我想使用 Java 通过 Omnikey 阅读器访问智能卡。我找到了一些解决方案,比如 smartcardio,但它没有足够的帮助。基本上我与阅读器连接,但当我不需要它时它使用 APDU。我有一个想法,通过 USB 向我的阅读器打开流,并通过流将二进制命令放入设备,然后以相同的方式获得答案,但从技术上讲,我该如何用 Java 编写它?

我还发现了类似 usb4java 的库,但对此也有不好的看法。也许有人对这个设备有任何经验,可以给我一些提示吗?

在互联网上,关于智能卡编程的教程并不多。我也尝试使用 pyApduTool 或 HID Omnikey Sync API V2.0.,但这仅用于测试。我必须编写简单的请求才能从卡中获取信息。

4

1 回答 1

0

基本上有两种方法可以解决您的问题:

  1. 不要使用java.smartcardio读卡器制造商使用的 PC/SC 接口,而是使用本机专有库,例如使用包装器(基于 JNI,但有更好/更高级别的替代方案);

  2. 继续使用 APDU,但使用设置为FF十六进制的 CLA 字节,打开与阅读器的连接。FF是保留的,但它通常是为这种读卡器访问保留的,例如访问没有 ISO/IEC 7816-4 层但读卡器制造商支持的存储卡。

  3. out of two(仅出于完整性考虑):许多读卡器使用 USB 转串口芯片创建,这意味着您可以直接连接到(虚拟)串口;不用说,如果这个接口存在的话,你必须知道发送什么命令和自己编程一切(Omnikey 3121 相对较新,所以我会感到惊讶)。

这两个选项都依赖于读卡器的特定功能,因此您将找到读卡器的信息以了解可能的情况。据我所知,没有办法要求提供什么功能。不要对这种功能的标准化抱有太多期望。

您是否检查了您的读卡器特定文档?

于 2019-03-04T20:11:01.520 回答