CN104657281B - 一种Java卡包数据管理方法 - Google Patents
一种Java卡包数据管理方法 Download PDFInfo
- Publication number
- CN104657281B CN104657281B CN201510115806.XA CN201510115806A CN104657281B CN 104657281 B CN104657281 B CN 104657281B CN 201510115806 A CN201510115806 A CN 201510115806A CN 104657281 B CN104657281 B CN 104657281B
- Authority
- CN
- China
- Prior art keywords
- bag
- address
- data
- component
- java card
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种Java卡包数据管理方法,Java卡以包为基本单位进行代码管理,包要进行编号,包的编号按顺序递增,数值介于1到128之间,包的管理包括添加包和删除包;Java卡包数据包括包地址信息和包数据信息,Java卡包数据的管理包括存储机制和访问方法,其中Java卡包数据的存储机制为包地址信息和包数据信息分离存储;本发明预先分配一块128×4字节的空间存储包地址表,避免了由多块分散空间存储引起的数据访问指针移动次数多、范围大的问题,提高了包数据访问的速度;在包信息表中引入基本信息数据块,减少了单独存储和维护引起的空间开销和管理复杂度;包地址和组件数据分离,组件数据在下载时候从EEPROM动态分配存储空间,增加了空间利用的有效性。
Description
技术领域
本发明涉及计算机技术领域,具体涉及一种Java卡包数据管理方法。
背景技术
随着金融电子化的全面发展,为解决用户对一卡多用的需要,支持多应用的Java卡得到了越来越多的普及应用。Java卡技术是一项新兴的智能卡技术,是一个开放的多应用平台,依据Oracle Javacard规范,Java卡中的多应用是以包为单位进行代码管理的。Java卡的应用基于包数据的下载和访问而展开,因此,包数据管理是Java卡操作系统的基本功能模块。
由于越来越多的金融应用对交易速度提出了更高的要求,比如闪付要求一次交易的交易时间小于400ms,如何从包数据管理角度优化数据访问速度,是对Java卡提出的一个新的功能需求;此外,智能卡的存储空间通常较小,如何有效利用有限的存储空间存储更多的多应用程序和数据,是对包数据管理提出的另一个性能需求。因此,提出一种可参考的高效的Java卡包数据管理实现方法,是一个迫切需要解决的问题。
发明内容
为解决上述问题,本发明的目的是提供一种Java卡包数据管理方法。
本发明为实现上述目的,通过以下技术方案实现:
一种Java卡包数据管理方法,Java卡以包为基本单位进行代码管理,包要进行编号,包的编号按顺序递增,数值介于1到128之间,包的管理包括添加包和删除包;Java卡包数据包括包地址信息和包数据信息,所述包地址信息位于包地址表,所述包数据信息分为包信息表和包组件数据两部分,所述包信息表由基本信息、类组件、方法组件、静态域组件和导出组件五部分组成;Java卡包数据的管理包括存储机制和访问方法,其中Java卡包数据的存储机制为包地址信息和包数据信息分离存储。
为进一步实现本发明的目的,还可以采用以下技术方案:
优选的,对于包的编号进行管理,具体为:Java卡中最多存储128个包,每个包的编号介于1到128之间;包的编号在下载数据到卡片时确定,通过从小到大对包地址表中存储的地址进行遍历来确定,如果某个地址为无效地址,则返回该地址对应的编号,如果全部地址信息均为有效地址,则表示已达到最大包个数。
优选的,包地址信息和包数据信息分离存储具体分为:
(1)包地址表在卡片出厂时确定存储位置,从EEPROM申请128×4字节的空间来存储每个包的地址信息;
(2)包信息表和包组件数据在添加包数据的时候动态从EEPROM中分配空间;其中包信息表的大小为5×4字节,包括基本信息、类组件、方法组件、静态域组件和导出组件五个部分数据的地址及长度,其中每个部分数据的地址的空间大小为3字节,长度的空间大小为1字节;包组件数据其大小由包组件实际数据的确定。
优选的Java卡包数据的访问方法,具体步骤为:
(1)通过包的编号,从包地址表中得到包信息表的地址,步骤如下:
①计算包地址表中的偏移量为包编号×4;
②从计算出的偏移地址中读取4字节,即为该包信息表的地址;
(2)通过组件编号,从包信息表中得到包的组件数据的地址,步骤如下:
①计算包信息表中的组件数据的偏移地址,即组件编号×4;
②从计算出的偏移地址中读取3字节,即为该包的组件数据的存储地址;
(3)从组件数据的存储地址中,进一步根据组件数据特征读取更进一步的数据信息。
优选的包的管理包括添加包和删除包,其中添加包的步骤为:
(1)为待添加包分配一个编号:从小到大按4个字节为单元遍历包地址表,如果当前地址为无效地址,则返回该地址对应的包编号作为新包的编号,如果全部地址均为有效地址,则表示已达到最大包个数,添加失败;
(2)在EEPROM中为待添加包的信息表分配5×4字节的空间,将地址写入到包地址表的相应位置;
(3)为待添加包的基本信息分配空间,并将该地址写入到包信息表的前3个字节;
(4)下载包组件数据到卡中,为这些组件数据分配空间,并将地址和数据长度根据组件类型写入到包信息表的合适位置。
删除包的步骤为:
(1)根据包的编号确定其包信息表的位置;
(2)按照基本信息、类组件、方法组件、静态域组件和导出组件的顺序,依次释放组件数据所占据的存储空间;
(3)释放包信息表所占用的存储空间;
(4)将包地址表中该包对应的地址设置为无效地址。
本发明的优点在于:
本发明预先分配一块128×4字节的空间存储包地址表,避免了由多块分散空间存储引起的数据访问指针移动次数多、范围大的问题,提高了包数据访问的速度;在包信息表中引入基本信息数据块,减少了单独存储和维护引起的空间开销和管理复杂度;包地址和组件数据分离,组件数据在下载时候从EEPROM动态分配存储空间,增加了空间利用的有效性,实现在Java卡有限的存储空间存储更多的应用程序和数据。
附图说明
图1为包地址表、包信息表和包组件数据的关系图。
具体实施方式
一种Java卡包数据管理方法,Java卡以包为基本单位进行代码管理,包要进行编号,包的编号按顺序递增,数值介于1到128之间,包的管理包括添加包和删除包;Java卡包数据包括包地址信息和包数据信息,所述包地址信息位于包地址表,所述包数据信息分为包信息表和包组件数据两部分,所述包信息表由基本信息、类组件、方法组件、静态域组件和导出组件五部分组成;Java卡包数据的管理包括存储机制和访问方法,其中Java卡包数据的存储机制为包地址信息和包数据信息分离存储。
为进一步实现本发明的目的,还可以采用以下技术方案:
优选的,对于包的编号进行管理,具体为:Java卡中最多存储128个包,每个包的编号介于1到128之间;包的编号在下载数据到卡片时确定,通过从小到大对包地址表中存储的地址进行遍历来确定,如果某个地址为无效地址,则返回该地址对应的编号,如果全部地址信息均为有效地址,则表示已达到最大包个数,通过对包进行编号的管理,可以有效提高数据的访问速度。
优选的,包地址信息和包数据信息分离存储具体分为:
(1)包地址表在卡片出厂时确定存储位置,从EEPROM申请128×4字节的空间来存储每个包的地址信息;
(2)包信息表和包组件数据在添加包数据的时候动态从EEPROM中分配空间;其中包信息表的大小为5×4字节,包括基本信息、类组件、方法组件、静态域组件和导出组件五个部分数据的地址及长度,其中每个部分数据的地址的空间大小为3字节,长度的空间大小为1字节;包组件数据其大小由包组件实际数据的确定。在包信息表中引入基本信息数据块,减少了单独存储和维护引起的空间开销和管理复杂度;通过将包地址信息和包数据信息的分离存储,避免由多块分散空间存储引起的数据访问指针移动次数多,范围大的问题,提高了包数据访问的速度;包地址和组件数据分离,组件数据在下载时候从EEPROM动态分配存储空间,增加了空间利用的有效性。
优选的,Java卡包数据的访问方法,具体步骤为:
(1)通过包的编号,从包地址表中得到包信息表的地址,步骤如下:
①计算包地址表中的偏移量为包编号×4;
②从计算出的偏移地址中读取4字节,即为该包信息表的地址;
(2)通过组件编号,从包信息表中得到包的组件数据的地址,步骤如下:
①计算包信息表中的组件数据的偏移地址,即组件编号×4;
②从计算出的偏移地址中读取3字节,即为该包的组件数据的存储地址;
(3)从组件数据的存储地址中,进一步根据组件数据特征读取更进一步的数据信息。通过本发明的访问方法可以快速的对Java卡包数据进行访问,尤其是能满足金融应用中对交易速度的要求。
优选的,包的管理包括添加包和删除包,其中添加包的步骤为:
(1)为添加包分配一个编号:从小到大按4个字节为单元遍历包地址表,如果当前地址为无效地址,则返回该地址对应的包编号作为新包的编号,如果全部地址均为有效地址,则表示已达到最大包个数,添加失败;
(2)在EEPROM中为添加包的信息表分配5×4字节的空间,将地址写入到包地址表的相应位置;
(3)为添加包的基本信息分配空间,并将该地址写入到包信息表的前3个字节;
(4)下载包组件数据到卡中,为这些组件数据分配空间,并将地址和数据长度根据组件类型写入到包信息表的合适位置。
删除包的步骤为:
(1)根据包的编号确定其包信息表的位置;
(2)按照基本信息、类组件、方法组件、静态域组件和导出组件的顺序,依次释放组件数据所占据的存储空间;
(3)释放包信息表所占用的存储空间;
(4)将包地址表中该包对应的地址设置为无效地址。
通过本发明添加包和删除包的操作,能够在Java卡有限的存储空间内存储更多的应用程序和数据,
实施例1
Java卡包数据的存储机制,具体如下:
1.Java卡包数据由包地址表、包信息表和包组件数据三部分组成,其中包信息表由基本信息、类组件、方法组件、静态域组件和导出组件五部分组成,定义包组件的编号:基本信息为1,类组件为2,方法组件为3,静态域组件为4,导出组件为5;其中包的基本信息通过结构体进行定义,形式如下:
Struct 包基本信息{
Byte 包最小版本号;
Byte 包最大版本号;
Short 静态引用个数;
Byte 导入包的个数;
Byte[] 导入包的编号数组;
Byte 是否包含APPLET;
Byte 包名字长度;
Byte[] 包名字数组;
};
2.定义宏变量PackageLocationAddress(包位置地址)为预先开辟的包地址表的开始地址,并将所有数据初始化为0,以表示无效地址,在EEPROM中预先分配128×4字节的空间存储包地址表,共存储128个4字节的地址,每个地址为每个包的信息表在EEPROM中的存储位置。
3.包信息表在添加包数据的时候动态从EEPROM中分配空间,其大小为5×4字节,保存基本信息、类组件、方法组件、静态域组件和导出组件五个部分数据的地址及其长度,具体表结构如表1所示:
表1 包信息表结构
基本信息存储地址(3字节)|数据长度(1字节) |
类组件存储地址(3字节)|数据长度(1字节) |
方法组件存储地址(3字节)|数据长度(1字节) |
静态域组件存储地址(3字节)|数据长度(1字节) |
导出组件存储地址(3字节)|数据长度(1字节) |
4.包组件数据在添加包数据的时候动态从EEPROM中分配空间,其大小由包组件实际数据的确定。
5.包地址表、包信息表和包组件数据三部分的关系如图1所示。
实施例2
Java卡包数据的访问方法,具体步骤为:
(1)通过包的编号,从包地址表中得到包信息表的地址,步骤如下:
①计算包地址表中的偏移量为包编号×4;
②从计算出的偏移地址中读取4字节,即为该包信息表的地址;
(2)通过组件编号,从包信息表中得到包的组件数据的地址,步骤如下:
①计算包信息表中的组件数据的偏移地址,即组件编号×4;
②从计算出的偏移地址中读取3字节,即为该包的组件数据的存储地址;
(3)从组件数据的存储地址中,进一步根据组件数据特征读取更进一步的数据信息。
实施例3
定义变量NewPackageID(新包ID)表示正在处理的新包编号,定义变量DownloadProcess(下载进程)表示是否在执行包下载过程。
包的管理包括添加包和删除包,其中添加包的步骤为:
(1)为添加包分配一个编号:从PackageLocationAddress地址处开始遍历,从小到大按4个字节为单元遍历包地址表,判断值是否为0,则当前地址为无效地址,则返回当前执行的遍历次数作为作为新包的编号,赋值给变量NewPackageID,同时设置变量DownloadProcess为真;如果遍历完毕,全部地址均为有效地址,则表示已达到最大包个数,添加失败;
(2)在EEPROM中为添加包的信息表分配5×4字节的空间,并将申请到的首地址写入到包地址表中相应位置,其偏移地址为New Package ID×4;
(3)为添加包的基本信息分配空间,并将该地址写入到包信息表的前3个字节;
(4)检查DownloadProcess是否为真,如果为假,则返回失败;如果为真,则读取下载到卡中的包组件数据,并进行添加。在添加时,根据读到的数据大小从EEPROM申请空间以存储这些数据,并将申请到的空间首地址和数据大小写入到包信息表中偏移地址为组件编号×4的位置。
删除包的步骤为:
(1)检测DownloadProcess是否为真,如果为真,则表示正在执行添加新包的过程,返回执行失败;
(2)根据包的编号确定其包信息表的位置:首先计算在包地址表中的偏移量,即Package Location Address+包编号×4,然后读取4字节数据即可得到,如果得到的地址为无效地址,则删除过程执行完成;
(3)按照基本信息、类组件、方法组件、静态域组件和导出组件的顺序,依次释放组件数据所占据的存储空间;
(4)释放包信息表所占用的存储空间;
(5)将包地址表中该包对应的地址设置为无效地址。
Claims (4)
1.一种Java卡包数据管理方法,其特征在于:Java卡以包为基本单位进行代码管理,包要进行编号,包的编号按顺序递增,数值介于1到128之间,包的管理包括添加包和删除包;Java卡包数据包括包地址信息和包数据信息,所述包地址信息位于包地址表,所述包数据信息分为包信息表和包组件数据两部分,所述包信息表由基本信息、类组件、方法组件、静态域组件和导出组件五部分组成;Java卡包数据的管理包括存储机制和访问方法,其中Java卡包数据的存储机制为包地址信息和包数据信息分离存储;
Java卡包数据的访问方法,具体步骤为:
(1)通过包的编号,从包地址表中得到包信息表的地址,步骤如下:
①计算包地址表中的偏移量为包编号×4;
②从计算出的偏移地址中读取4字节,即为该包信息表的地址;
(2)通过组件编号,从包信息表中得到包的组件数据的地址,步骤如下:
①计算包信息表中的组件数据的偏移地址,即组件编号×4;
②从计算出的偏移地址处读取3字节,则得到该包的组件数据的存储地址;
(3)从组件数据的存储地址中,进一步根据组件数据特征读取更进一步的数据信息。
2.根据权利要求1所述的一种Java卡包数据管理方法,其特征在于:对于包的编号进行管理,具体为:Java卡中最多存储128个包,每个包的编号介于1到128之间;包的编号在下载数据到卡片时确定,通过从小到大对包地址表中存储的地址进行遍历来确定,如果某个地址为无效地址,则返回该地址对应的编号,如果全部地址信息均为有效地址,则表示已达到最大包个数。
3.根据权利要求1所述的一种Java卡包数据管理方法,其特征在于:包地址信息和包数据信息分离存储,具体分为:
包地址表在卡片出厂时确定存储位置,从EEPROM申请128×4字节的空间来存储每个包的地址信息;
包信息表和包组件数据在添加包数据的时候动态从EEPROM中分配空间;其中包信息表的大小为5×4字节,包括基本信息、类组件、方法组件、静态域组件和导出组件五个部分数据的地址及长度,其中每个部分数据的地址的空间大小为3字节,长度的空间大小为1字节;包组件数据其大小由包组件实际数据的确定。
4.根据权利要求1所述的一种Java卡包数据管理方法,其特征在于:包的管理包括添加包和删除包,其中添加包的步骤为:
(1)为待添加包分配一个编号:从小到大按4个字节为单元遍历包地址表,如果当前地址为无效地址,则返回该地址对应的包编号作为新包的编号,如果全部地址均为有效地址,则表示已达到最大包个数,添加失败;
(2)在EEPROM中为待添加包的信息表分配5×4字节的空间,将地址写入到包地址表的相应位置;
(3)为待添加包的基本信息分配空间,并将该地址写入到包信息表的前3个字节;
(4)下载包组件数据到卡中,为这些组件数据分配空间,并将地址和数据长度根据组件类型写入到包信息表的合适位置;
删除包的步骤为:
(1)根据包的编号确定其在包信息表的位置;
(2)按照基本信息、类组件、方法组件、静态域组件和导出组件的顺序,依次释放组件数据所占据的存储空间;
(3)释放包信息表所占用的存储空间;
(4)将包地址表中该包对应的地址设置为无效地址。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510115806.XA CN104657281B (zh) | 2015-03-17 | 2015-03-17 | 一种Java卡包数据管理方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510115806.XA CN104657281B (zh) | 2015-03-17 | 2015-03-17 | 一种Java卡包数据管理方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104657281A CN104657281A (zh) | 2015-05-27 |
CN104657281B true CN104657281B (zh) | 2017-10-27 |
Family
ID=53248446
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510115806.XA Active CN104657281B (zh) | 2015-03-17 | 2015-03-17 | 一种Java卡包数据管理方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104657281B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106528441B (zh) * | 2016-10-26 | 2020-08-04 | 珠海格力电器股份有限公司 | 仿真eeprom的数据处理方法、装置及电子设备 |
CN111459683B (zh) * | 2020-04-10 | 2023-05-02 | 四川物可智科技有限公司 | 一种Java Card空间管理方法 |
CN112612753B (zh) * | 2020-12-29 | 2021-09-28 | 深圳杰睿联科技有限公司 | 一种动态管理Java Card存储空间的系统和方法 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101739280A (zh) * | 2008-11-11 | 2010-06-16 | 爱思开电讯投资(中国)有限公司 | 用于java卡的字节码优化系统和方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7168612B2 (en) * | 2001-12-24 | 2007-01-30 | Axalto Inc | Method and apparatus for processing transactions in a data processing system |
-
2015
- 2015-03-17 CN CN201510115806.XA patent/CN104657281B/zh active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101739280A (zh) * | 2008-11-11 | 2010-06-16 | 爱思开电讯投资(中国)有限公司 | 用于java卡的字节码优化系统和方法 |
Non-Patent Citations (1)
Title |
---|
Java卡关键技术的研究及实现;李彦超等;《计算机应用》;20060331;第26卷(第3期);第742-745页 * |
Also Published As
Publication number | Publication date |
---|---|
CN104657281A (zh) | 2015-05-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104657281B (zh) | 一种Java卡包数据管理方法 | |
CN108231109B (zh) | 动态随机存取存储器dram的刷新方法、设备以及系统 | |
CN104205132B (zh) | 在智能卡的非易失性存储器中写入数据 | |
CN101582092B (zh) | 一种实现保存内存中的数据的方法及装置 | |
CN104750616A (zh) | 数据储存装置以及快闪存储器控制方法 | |
CN100378663C (zh) | 将应用程序动态下载到用户识别模块的方法、系统及模块 | |
CN103218312A (zh) | 文件访问方法及系统 | |
CN101840373B (zh) | 数据操作方法及装置 | |
CN103345519B (zh) | 无共享分布式数据库的数据分布的方法和装置 | |
CN101484876A (zh) | 多任务虚拟机的堆组织 | |
CN101706788B (zh) | 一种嵌入式文件系统的跨区访问方法 | |
CN106528443A (zh) | 适用于星载数据管理的flash管理系统及方法 | |
CN102073544A (zh) | 一种基于页操作的EEPROM cache方法 | |
CN107391181A (zh) | 一种系统分区的方法及装置 | |
CN107391272A (zh) | 多进程数据交互的方法和终端 | |
JP2013161222A (ja) | Icカード、及びプログラム | |
CN103020077A (zh) | 一种电力系统实时数据库内存管理方法 | |
CN109643239B (zh) | Java卡应用存储器占用空间优化 | |
CN104281529A (zh) | 大容量rfid电子标签动态分区方法及电子标签和应用 | |
US6772171B1 (en) | Method and device for creating an object in a non-persistent memory and/or keeping accessibility to said object | |
CN102103545B (zh) | 一种数据缓存的方法、装置及系统 | |
CN113343045A (zh) | 一种数据缓存方法及网络设备 | |
EP1266291B1 (en) | Method and apparatus for distinguishing reachable objects and non-reachable objects in an object-based application | |
CN112402955B (zh) | 游戏日志记录方法及系统 | |
US20190188689A1 (en) | Loading a java card memory with a java card package through a card personalization specification flow |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |