如何在javacard上存储数据?

时间:2011-11-10 15:15:42

标签: smartcard sim-card javacard

我正在尝试使用JavaCard的applet - 它是非常简单的SCWS serverlet(基本上来自Gemalto Dev Suite的模板)。我希望它能在卡上存储一些数据 - 怎么做?我找到了一些关于线性和循环文件的理论材料。

// EDIT

我找到了类似的东西:

private byte createfile()
    {
        try{
            AdminFileView uiccAdminFileView = AdminFileViewBuilder.getTheUICCAdminFileView(JCSystem.CLEAR_ON_RESET);
            if(uiccAdminFileView == null){
                return 'a';
            }
            uiccAdminFileView.select((short)0x7F60);
            EditHandler editHandler = (EditHandler) HandlerBuilder.buildTLVHandler(HandlerBuilder.EDIT_HANDLER,
                    (short) 50);
            editHandler.clear();
            editHandler.appendArray(CreateEF, (short) 0,(short) CreateEF.length);
            uiccAdminFileView.createFile(editHandler);
            data[0] = (byte) 0x12;
            data[1] = (byte) 0x34;
            data[2] = (byte) 0x56;
            uiccAdminFileView.select((short)0xEE00);
            uiccAdminFileView.updateBinary((short) 0, data, (short)0, (short)3);
        } catch(UICCException e){

            return (byte)e.getReason();
        }
        return 'b';
    }

但此时它每次都返回“a” - 据我所知它与applet的访问权限有关。

3 个答案:

答案 0 :(得分:0)

对于“真正的”智能卡,您可以通过标准的APDU命令创建/编辑/删除数据。为此,必须在卡上安装一个操作系统,能够处理APDU以创建/更新/读取文件等。如果卡完全处女(即内部没有任何内容),你必须使用卡的API或阅读规范并自己做所有事情(很可能你会处理组装)。我不知道你的卡是什么,所以我不能给出具体的指示,请阅读你的手册。

答案 1 :(得分:0)

一旦在Java Card中有一个基于ISO 7816-4文件的API,但很久以前就已经沉没了。现在你只需要自己编程。您至少需要ISO 7816-4(2005)标准才能使与基于文件的卡远程兼容。

当您必须通过安全消息传递通道从超过32K的偏移量发送文件数据时,真正的“乐趣”开始,同时密切关注文件选择和访问权限。对于任何阅读这个老问题答案的人:祝你好运 - 并知道可以完成。

答案 2 :(得分:0)