我将使用Java Card Framework编写一个智能卡应用程序。当我完成我的应用程序时,我想设置一个真正的智能卡并尝试它。我必须拥有哪些设备?我怎样才能运行我的代码?真正的智能卡?我必须在我的电脑和智能卡之间提供一个连接器,不是吗?
答案 0 :(得分:5)
在IDE(例如Eclipse或Netbeans)中编写Java Card应用程序(我们称之为applet)后,您可以通过以下步骤在真实智能卡上与其进行通信:
.java
文件转换为.class
文件.class
工具将.cap
文件转换为converter
文件.cap
文件。第1步和第2步:
如果您想使用Java Card v2.2.2或兼容v2.2.1的卡,只需将Eclipse-JCDE插件和Java Card Dev Kit添加到 Eclipse <,即可执行步骤1和步骤2 / em> IDE。 (一个简单的一步一步教程,使用此插件here和here)
如果您想使用兼容Java Card v3.x的卡,可以使用 Netbeans IDE的较新版本(我的版本为7.3),其中包含必要的工具和插件,以执行步骤1和默认情况下,步骤2。(一个简单的分步教程,here)
在这些步骤中,您将两个5-16个字节的数字设置为您的应用程序及其包作为applet AID(标识符)和包AID
请注意,您可以在没有任何IDE且仅使用JCDK-s的情况下执行此步骤,但这有点棘手。此外,Netbeans IDE为JCDK模拟器添加了另一个Java Card模拟器(名为CREF
和JCWDE
)
第3步和第4步:
将智能卡读卡器(仅限智能卡写入器)连接到您的计算机。然后使用JCManager工具(简易使用)或更新的工具GlobalPlatformPro工具(易于使用,文档齐全,非常全面),您上传.cap
文件并单独或同时安装applet 。
您需要使用卡的身份验证密钥才能上传和安装applet。
第5步和第6步:
通常,您的智能卡读卡器有一个工具可以让您与卡通信(发送APDU命令和接收数据和状态字),但您也可以使用一些免费的开源工具,如OpenSC-tool。首先,在其数据字段中使用applet的AID向卡发送SELECT APDU命令。其次,您将其他命令发送到卡上。
注意:
您可以使用Java中的javax.smartcardio
包或Python中的PySCard库来编写步骤3,4,5和6的专有程序。(步骤5和6很容易,但是步骤3和4)有点困难;)
“APDU”(应用程序数据协议单元)是用于将[接收]命令[响应]发送到[来自]卡的协议。