使用Java访问智能卡

6

我正在学习Java如何访问智能卡,以进行项目分析。我想知道是否有任何虚拟智能卡可供我使用,以便在Java中进行一些测试?

顺便说一下,我已经了解了Java Card的相关内容,看起来它是用于在卡片中运行Java,而不是使用Java访问智能卡数据,对吗?

5个回答

9

查看此教程和示例。以及相关内容。(我已经使用这些示例,并且它们运行良好)。

一个重要的点是你无法从智能卡中获取任何东西。你只能将事物发送到其处理器。因此,每当您获得PrivateKey对象时,您实际上并没有私钥——这只是智能卡处理器的代理,并调用它上面的方法会调用处理器。

我不知道虚拟智能卡,尽管。

一个有趣的API是javax.smartcardio


“不能读取智能卡中的任何内容”并不意味着我无法获得它的公钥,我希望能够获取到。 - The Student
1
好的,我找到了更多关于:http://www.java2s.com/Open-Source/Java-Document/6.0-JDK-Core/smartcardio/javax.smartcardio.htm 的信息。 - The Student
你可以获取公钥。 - Bozho
智能卡可以提供应用程序开发人员允许您获取的任何内容。它被视为FIPS-140安全令牌,因此旨在保护安全性。 - Shane
嗨Tom,你最后有任何工作示例吗?我尝试按照http://www.cardwerk.com/smartcards/smartcard_standard_ISO7816-4_5_basic_organizations.aspx#chap5_3将命令发送到实际卡片,但是没有任何意义-我收到响应,但它们都是一些关于错误的信息。例如,你有任何读取卡片中带有公钥的用户证书的示例吗? - igor.beslic

2

Java Card开发工具包中附带了Java Card仿真器。如果您计划在某个阶段使用实际卡片,请获取版本2.2.1或2.2.2,因为我不会预期会有任何版本3的卡片出现。您仍需要一个Applet放在卡上。 Java Card本身无法执行任何有用的功能。只有在加载卡Applet后,它才能执行任何有用的功能。

JCDK中仿真器的一个问题是,您无法使用javax.smartcardio访问卡片,而这是目前与卡通信的首选方法。另一个流行的替代方案OpenCard Framework已经有一段时间没有得到积极维护。


1
Javacard只使用Java开发的子集,最好不要使用Java开发环境,因为有一些特殊效果不支持。您可以下载插件或专用开发IDE,可以从这里www.javacos.com下载相关开发环境。

1

0
如果你需要模拟JavaCard,可以尝试使用jCardSim:http://jcardsim.org。 它还支持通过javax.smartcardio API和apdu-scripts进行访问。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接