Java 如何访问Omnikey 3121智能卡读卡器
我想用Java通过万能读卡器访问智能卡。我找到了一些解决方案,比如smartcardio,但效果还不够。基本上我和reader连接,但当我不需要它时,它使用APDU。我有一个想法,通过USB向我的阅读器打开stream,然后通过stream向设备发送二进制命令,然后以同样的方式得到答案,但从技术上讲,我如何用Java编写它呢 我还发现了像usb4java这样的库,但对此也有不好的看法。也许有人有过使用这个设备的经验,可以给我一些提示吗Java 如何访问Omnikey 3121智能卡读卡器,java,smartcard,javacard,smartcard-reader,omnikey,Java,Smartcard,Javacard,Smartcard Reader,Omnikey,我想用Java通过万能读卡器访问智能卡。我找到了一些解决方案,比如smartcardio,但效果还不够。基本上我和reader连接,但当我不需要它时,它使用APDU。我有一个想法,通过USB向我的阅读器打开stream,然后通过stream向设备发送二进制命令,然后以同样的方式得到答案,但从技术上讲,我如何用Java编写它呢 我还发现了像usb4java这样的库,但对此也有不好的看法。也许有人有过使用这个设备的经验,可以给我一些提示吗 在互联网上,关于智能卡编程的教程并不多。我还尝试使用pyAp
在互联网上,关于智能卡编程的教程并不多。我还尝试使用pyApduTool或HID Omnikey Sync API V2.0,但这仅用于测试。我必须写一些简单的请求才能从信用卡中获取信息。基本上有两种解决问题的方法:
FF
hex,打开与读卡器的连接FF
是保留的,但它通常是为这种读卡器访问而保留的,例如,访问读卡器制造商支持的没有ISO/IEC 7816-4层的存储卡您是否查看了读卡器的特定文档?我不完全理解您的问题“在我不需要时使用APDU”。通过APDU与卡进行通信,这是迄今为止最简单的方法。为了简单起见,您必须与读者交流的更奇特的任务通常也映射到APDU。首先看一看它的答案。这个问题有很多,但不在其中的是你想做的。@MaartenBodewes你的意思是什么?@guidot我必须发送这张卡的特定请求,所以我想打开流,然后发送二进制请求。但是谢谢你的链接。谢谢,我会试试的。我还有一件事我不明白。我找到了获取响应的解决方案(基本上就是从卡中获取“hello”,因为我知道每个卡的命令都是相同的),在使用命令之前的第一步是“selectapplet”。我不知道我的卡有什么帮助,所以我试着通过“PyApduTool”知道,在连接之后,我切换到“Applet”选项卡。刷新后获得信息“列表小程序失败。错误:GP init update失败。recv:6D 00”。也许你知道那意味着什么?(我知道什么是6D 00代码,我的卡肯定是用Java编程的)6D00是未知指令。您需要在卡管理器中执行这些操作,您可以通过帮助进行选择。它要么是VISA one(最初被VISA/Mastercard称为OpenPlatform as is),要么是GP one,用于更新的卡。但是,对于INIT UPDATE/EXT AUTH,您需要知道安全域的密钥。这些通常不适用于发行的卡。例如,POS终端知道银行应用程序的帮助,不需要列出它们。不幸的是,我通过使用usb4java库获得了“无法打开USB设备:此平台上不支持或未实现的操作”。是的,太新了,不记得其中有一个FTDI芯片。可能是单芯片解决方案,集成它已经太贵了。无论如何。。我最终使用APDU协议发送请求。我得到响应,但数据返回为ISO 7816。我试图解析字符串的响应,但有些数据被解析为无法识别的字符。。作为�. 您能推荐一种在Java中解码apdu响应的好方法吗?