由于项目分析,我正在尝试了解 Java 如何访问智能卡。我想知道是否有任何类型的虚拟智能卡可以用来用 Java 进行一些测试?
顺便说一句,我读过 Java Card,看起来它是用来在卡片中运行 Java,而不是使用 Java 来访问智能卡数据,对吧?
看这个教程+例子。和相关。(我已经使用了这些示例,它们工作正常)。
重要的一点是您无法从智能卡中得到任何东西。您只能将内容发送到其处理器。所以每当你得到一个PrivateKey
对象时,你实际上并没有私钥——这只是智能卡处理器的代理,调用它的方法,调用处理器。
不过,我不知道虚拟智能卡。
感兴趣的 API 是javax.smartcardio
Java Card 仿真器与Java Card Development Kit捆绑在一起。如果您打算在某个阶段使用真正的卡,请获得 2.2.1 或 2.2.2 版本,因为我暂时不会期望任何版本 3 卡。您仍然需要一个小程序才能放在卡上。java卡本身什么也不做。直到您加载卡片小程序,它才会执行任何有用的功能。
JCDK 中的模拟器的一个问题是您不能使用 javax.smartcardio 访问卡,这是目前与卡通信的首选方法。另一种流行的替代方案 OpenCard 框架在一段时间内没有得到积极维护。
您可以在此处获得虚拟智能卡(和虚拟阅读器):http: //sourceforge.net/projects/vsmartcard/
Javacard 使用 Java 只是 Java 开发的一个子集 你最好不要使用 Java 开发环境 因为有一些特效不支持 你可以下载插件或者专用的开发 IDE,你可以从这里下载 www.javacos.com相关的开发环境。
如果您需要模拟 JavaCard,请尝试使用 jCardSim:http: //jcardsim.org。它还支持通过 javax.smartcardio API 和 apdu-scripts 访问。