我想使用Java通过Omnikey读取器访问智能卡。我找到了诸如智能心脏的夫妇解决方案,但效果不佳。基本上,我与阅读器相连,但是在不需要它时会使用APDU。我有一个想法,可以通过USB向我的阅读器打开流,并通过将二进制命令流传输到设备,然后以相同的方式获取答案,但是从技术上讲,我该如何用Java编写它?
我还发现了像usb4java这样的库,但对此也有不好的看法。也许有人对这款设备有任何经验,可以给我一些提示吗?
在互联网上,关于编程智能卡的教程并不多。我尝试过也使用pyApduTool或HID Omnikey Sync API V2.0。,但这仅用于测试。我必须写一些简单的请求才能从卡中获取信息。
答案 0 :(得分:0)
解决问题基本上有两种方法:
不使用java.smartcardio
使用的PC / SC接口,而是使用读卡器制造商的本机专有库,例如使用包装器(基于JNI,但级别更高/更高)替代品);
保留使用APDU,但使用设置为FF
十六进制的CLA字节,从而打开与读取器的连接。 FF
是保留的,但通常是为此类读卡器访问保留的,例如可以访问读取器制造商支持的不带ISO / IEC 7816-4层的存储卡。
中的两个(仅出于完整性):使用USB到串行接口芯片创建了许多读卡器,这意味着您可以直接连接到(虚拟)串行接口;不用说,如果这个接口存在(Omnikey 3121相对较新,我会感到惊讶),那么您将必须知道自己发送和编程所有命令的命令。
这两个选项都依赖于读卡器的特定功能,因此您将找到信息,供读卡器查看可能的操作。据我所知,没有办法要求提供什么功能。对于这种功能,不要期望标准化太多。
您是否已查看读卡器的特定文档?