我正在编写一个与当前使用Java的智能卡交互的应用程序。我有一台OMRON V2BF系列读卡器。该应用程序在Debian上运行。
我尝试使用Java Smart Card I/O API尝试建立与智能卡的连接。
但我无法使用
检测/获取任何卡终端 TerminalFactory factory = TerminalFactory.getDefault();
List<CardTerminal> terminals = factory.terminals().list();
我还尝试通过向OMRON阅读器发送命令包来“按下并激活(冷复位)ICC”,但响应始终为“否定”。
我可以知道我做错了哪一部分?任何建议将不胜感激!
答案 0 :(得分:2)
factory.terminals().list()
默认只显示与PCSC兼容的设备。我没有看到有关当前阅读器的PCSC支持的任何信息。请参阅文档或供应商。
您的智能卡应该是与ISO 7816-4兼容的智能卡才能与javax.smartcardio一起使用,存储卡将无法使用。 javax.smartcardio基本上用于CommandAPDU和ResponseAPDU,它们是“处理器”卡的ISO 7816-4兼容数据结构。
您可能会使用读卡器制造商提供的接口规范通过串行接口与读卡器进行通信。您可以使用Java Communications API来执行此操作。
请注意,许多制造商将提供C / C ++甚至.NET中的示例代码和库,在这种情况下,它可能是切换编程语言/平台或围绕本机代码创建JNI包装器的选项。
如果您正在为处理器卡(例如信用卡)写信,您甚至可以自己创建一个兼容javax.smartcardio的终端并将其插入终端列表。