如何在 Java 中与智能卡交互?

Posted

技术标签:

【中文标题】如何在 Java 中与智能卡交互?【英文标题】:How to interact with a smart card in Java? 【发布时间】:2011-04-18 21:52:14 【问题描述】:

是否有 Java 中的库 (API) 可以与智能卡进行交互?类似于 WinSCard 库。

我需要能够连接智能卡并从中读取数据。我需要用 Java 实现它,以便我可以在任何操作系统(Linux、Mac、Windows)下使用它。由于 WinSCard 库仅在 Windows 下工作,因为它使用 DLL (WinSCard.dll)。

Java 中有没有比 WinSCard 更好的东西?

【问题讨论】:

【参考方案1】:

其中一个解决方案是使用Java™ Smart Card I/O API。请参阅"Description" 部分了解简单的使用示例。

【讨论】:

+1。该页面末尾有一个 API 示例,非常有用。 你怎么能得到这个api?我目前正在使用 jre7 @ralphspoon 此 API 可用于 JDK 安装(从 Java 版本 6 开始)。所以首先,你需要安装JDK (What is the difference between JDK and JRE?)。其次,在 Java 文件的顶部添加相关导入(或导入所有内容,例如 import javax.smartcardio.*;【参考方案2】:

基本 API 是Smartcard IO,它提供了将 APDU 发送到卡的基本操作。在此之后,有几个更高的 API 可用。例如,如果您需要连接到 JavaCard 来管理小程序,则需要一个 Global Platform 实现,例如 Opal Library(无耻自我推广)。

【讨论】:

【参考方案3】:

PC/SC 规范作为读卡器和卡和计算机之间的标准接口。打开 VC 支持 PC/SC 标准密钥头文件 WinScard.h。 用java可以调用VC的PC/SC,作为解决你问题的中间方式。

【讨论】:

以上是关于如何在 Java 中与智能卡交互?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 C++ 中与其他应用程序交互?

如何在控制台中与我的播放应用程序交互?

如何在 iOS 应用中与 UIButton 的特定区域进行交互

如何在我的 Rails 应用程序中与亚马逊产品广告 API 交互?

如果在单个请求中与 Oracle 和 PostgreSql 交互以处理超过 20 万条记录,如何提高 EF Core 性能

如何调用 Solidity 函数从智能合约中返回以太币?