CN115618910A - 用于Java卡的字节码压缩方法及智能卡系统 - Google Patents

用于Java卡的字节码压缩方法及智能卡系统 Download PDF

Info

Publication number
CN115618910A
CN115618910A CN202211533686.1A CN202211533686A CN115618910A CN 115618910 A CN115618910 A CN 115618910A CN 202211533686 A CN202211533686 A CN 202211533686A CN 115618910 A CN115618910 A CN 115618910A
Authority
CN
China
Prior art keywords
byte
bytecode
code
extended
byte code
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.)
Pending
Application number
CN202211533686.1A
Other languages
English (en)
Inventor
王兴川
刘静亚
张雨义
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Ziguang Tongxin Microelectronics Co Ltd
Original Assignee
Ziguang Tongxin Microelectronics Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Ziguang Tongxin Microelectronics Co Ltd filed Critical Ziguang Tongxin Microelectronics Co Ltd
Priority to CN202211533686.1A priority Critical patent/CN115618910A/zh
Publication of CN115618910A publication Critical patent/CN115618910A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06KGRAPHICAL DATA READING; PRESENTATION OF DATA; RECORD CARRIERS; HANDLING RECORD CARRIERS
    • G06K19/00Record carriers for use with machines and with at least a part designed to carry digital markings
    • G06K19/06Record carriers for use with machines and with at least a part designed to carry digital markings characterised by the kind of the digital marking, e.g. shape, nature, code
    • G06K19/067Record carriers with conductive marks, printed circuits or semiconductor circuit elements, e.g. credit or identity cards also with resonating or responding marks without active components
    • G06K19/07Record carriers with conductive marks, printed circuits or semiconductor circuit elements, e.g. credit or identity cards also with resonating or responding marks without active components with integrated circuit chips
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Software Systems (AREA)
  • Devices For Executing Special Programs (AREA)

Abstract

本申请涉及智能卡技术领域,公开一种用于Java卡的字节码压缩方法及智能卡系统、Java智能卡,其中,所述字节码压缩方法,包括:根据Java卡规范对应的字节码列表,构建扩展指令集合,其中,所述扩展指令集合中包括所述字节码列表中的多个字节码对应的扩展字节码;将所述字节码列表中满足预设使用频率的多个字节码进行组合和重构,生成具有代码功能的宏指令字节码;遍历查找已经编译完成的Java包对应的字节码文件,将所述字节码文件中符合条件的多个字节码替换为所述扩展字节码和/或宏指令字节码。

Description

用于Java卡的字节码压缩方法及智能卡系统
技术领域
本申请涉及智能卡技术领域,例如涉及一种用于Java卡的字节码压缩方法及智能卡系统。
背景技术
智能卡也称为芯片卡或IC卡,其是将集成电路芯片封装在一个塑料基片上,通过芯片内的通信模块,智能卡可以和外部设备通信,完成数据传输、存储和处理,实现各种业务。早期的智能卡实际上并不是严格意义下的智能卡,只是一种存储卡,因为它没有片上微处理器,而只有少量的存储单元和固化的逻辑电路。随着技术的发展,出现了微处理器卡,能够提供更高的安全性和更多的功能,这种微处理器卡不能直接和外部交换数据,而是通过外部设备对微处理器发送一组指令,再由微处理器执行相关的操作,并把数据返回给外部设备。
Java卡是一种基于Java语言的智能卡,由于Java语言的平台无关性、高安全性和易开发性,在智能卡应用中有相当的优势。在广大厂商的支持下,推出了Java Card 1.1规范的2.0、 2.1、和2.2版,为Java智能卡定义了技术标准,现在最新的规范是发布的3.1版本,提出了更为完整的技术要求。目前,智能卡技术已经趋于成熟,在金融、交通和电信等各个领域得到了广泛应用。
在实现本公开实施例的过程中,发现相关技术中至少存在如下问题:
由于智能卡的空间和处理器速度的约束,应用程序在Java智能卡上运行时面临的最大问题是存储空间的不足和对程序执行时间的严格限制。因此,如何对下载到Java智能卡中的字节码进行优化,成为了一个亟待解决的技术问题。
需要说明的是,在上述背景技术部分公开的信息仅用于加强对本申请的背景的理解,因此可以包括不构成对本领域普通技术人员已知的现有技术的信息。
发明内容
为了对披露的实施例的一些方面有基本的理解,下面给出了简单的概括。所述概括不是泛泛评述,也不是要确定关键/重要组成元素或描绘这些实施例的保护范围,而是作为后面的详细说明的序言。
本公开实施例提供了一种用于Java卡的字节码压缩方法、智能卡系统和Java智能卡,以节省Java卡的内存空间并提高Java卡的执行速度。
在一些实施例中,所述用于Java卡的字节码压缩方法,包括:
根据Java卡规范对应的字节码列表,构建扩展指令集合,其中,所述扩展指令集合中包括所述字节码列表中的多个字节码对应的扩展字节码;
将所述字节码列表中满足预设使用频率的多个字节码进行组合和重构,生成具有代码功能的宏指令字节码;
遍历查找已经编译完成的Java包对应的字节码文件,将所述字节码文件中符合条件的多个字节码替换为所述扩展字节码和/或宏指令字节码。
可选地,所述根据Java卡规范对应的字节码列表,构建扩展指令集合,包括:
根据Java卡规范确定出所述字节码列表中的空余位置;
根据多个字节码形成的具有代码功能的多个字节码序列,构建与所述字节码序列具有相同代码功能的扩展字节码;
将扩展字节码填充到所述字节码列表中的空余位置中,形成扩展指令集合。
可选地,所述将所述字节码列表中满足预设使用频率的多个字节码进行组合和重构,生成具有代码功能的宏指令字节码,包括:
将所述字节码列表中的多个字节码进行顺序组合,得到具有代码功能且满足预设使用频率的多个字节码序列;
对所述多个字节码序列进行重构,合并为一个与所述字节码序列具有相同代码功能的宏指令字节码。
可选地,所述遍历查找已经编译完成的Java包对应的字节码文件,将所述字节码文件中符合条件的多个字节码替换为所述扩展字节码和/或宏指令字节码,包括:
获取已经编译完成的Java包对应的字节码文件;
遍历查找所述字节码文件,获取与所述扩展字节码和/或宏指令字节码具有相同的代码功能的多个字节码;
将与所述扩展字节码和/或宏指令字节码具有相同的代码功能的多个字节码替换为对应的扩展字节码和/或宏指令字节码。
在一些实施例中,所述智能卡系统包括:
指令集扩展模块,被配置为根据Java卡规范对应的字节码列表,构建扩展指令集合,其中,所述扩展指令集合中包括所述字节码列表中的多个字节码对应的扩展字节码;
宏指令构建模块,被配置为将所述字节码列表中满足预设使用频率的多个字节码进行组合和重构,生成具有代码功能的宏指令字节码;
字节码压缩模块,被配置为遍历查找已经编译完成的Java包对应的字节码文件,将所述字节码文件中符合条件的多个字节码替换为所述扩展字节码和/或宏指令字节码。
在一些实施例中,所述智能卡系统包括处理器和存储有程序指令的存储器,所述处理器被配置为在运行所述程序指令时,执行如本申请所述的用于Java卡的字节码压缩方法。
在一些实施例中,所述Java智能卡,包括:
Java卡本体;
如本申请所述的智能卡系统,被安装于所述Java卡本体。
本公开实施例提供的用于Java卡的字节码压缩方法、智能卡系统和Java智能卡,可以实现以下技术效果:
本申请通过构建扩展指令集合和压缩满足预设使用频率的多个字节码的方式,将编译完成的Java包对应的字节码文件中符合条件的多个字节码替换为扩展字节码和/或宏指令字节码,在保证代码功能不变的情况下,实现了字节码的压缩,从而节省了字节码空间并且提高了字节码的执行速度。
以上的总体描述和下文中的描述仅是示例性和解释性的,不用于限制本申请。
附图说明
一个或多个实施例通过与之对应的附图进行示例性说明,这些示例性说明和附图并不构成对实施例的限定,附图中具有相同参考数字标号的元件示为类似的元件,附图不构成比例限制,并且其中:
图1是本公开实施例提供的一个Java智能卡的系统结构示意图;
图2是本公开实施例提供的一个用于Java卡的字节码压缩方法的示意图;
图3是本公开实施例提供的另一个用于Java卡的字节码压缩方法的示意图;
图4是是本公开实施例提供的另一个用于Java卡的字节码压缩方法的示意图;
图5是本公开实施例提供的一个字节码压缩的应用示意图;
图6是本公开实施例提供的另一个字节码压缩的应用示意图;
图7是本公开实施例提供的一个智能卡系统(软件)的示意图;
图8是本公开实施例提供的一个智能卡系统(硬件)的示意图。
具体实施方式
为了能够更加详尽地了解本公开实施例的特点与技术内容,下面结合附图对本公开实施例的实现进行详细阐述,所附附图仅供参考说明之用,并非用来限定本公开实施例。在以下的技术描述中,为方便解释起见,通过多个细节以提供对所披露实施例的充分理解。然而,在没有这些细节的情况下,一个或多个实施例仍然可以实施。在其它情况下,为简化附图,熟知的结构和智能卡系统可以简化展示。
本公开实施例的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本公开实施例的实施例。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含。
除非另有说明,术语“多个”表示两个或两个以上。
本公开实施例中,字符“/”表示前后对象是一种“或”的关系。例如,A/B表示:A或B。
术语“和/或”是一种描述对象的关联关系,表示可以存在三种关系。例如,A和/或B,表示:A或B,或,A和B这三种关系。
术语“对应”可以指的是一种关联关系或绑定关系,A与B相对应指的是A与B之间是一种关联关系或绑定关系。
本申请通过在智能卡硬件平台上,构建包括硬件和软件的智能卡系统,以支持Java语言下载、运行,称为Java智能卡。Java智能卡继承了Java技术的平台无关性,将硬件和软件分离,简化了应用程序开发,提高了程序移植性。
结合图1所示,Java智能卡由以下几部分组成:
1、智能卡系统(硬件):包括微处理器、存储器、通信电路、加密协处理器等模块,以及与智能卡硬件相关的本地方法集,用于完成基本的 I/O、存储、加密解密等对硬件的操作。
2、智能卡系统(软件):包括Java智能卡运行环境、Java智能卡类库和Java智能卡虚拟机,其中,Java智能卡运行环境包括支持卡内的Applet间的安全机制和对象共享机制,支持卡内的事务处理和异常处理;Java智能卡类库包括支持Java智能卡运行的核心类库和扩展类库;Java智能卡虚拟机用于完成对类文件的解析、构建Java栈和帧结构以支持Java字节码的执行。
3、智能卡应用:包括运行智能卡上的 Java 应用程序。
智能卡中两个重要的组成部分,智能卡系统和智能卡应用一大部分是使用Java语言实现的。通过Java编写系统和应用,使用Java编译器编译后,生成的可以执行的程序就是字节码。而这个字节码是由智能卡系统(软件)里面的Java虚拟机解析执行的。
在实际应用中,若要求Java智能卡剩余的空间是512Kb,而Java智能卡整体可用空间是1024Kb,系统区中Java代码占用了约300Kb,C代码和库函数占用了约130Kb,系统文件和系统配置区占用约90Kb,导致剩余的字节空间很紧张。
为此,本公开实施例提供一种用于Java卡的字节码压缩方法用于压缩空间,在智能卡系统和智能卡应用使用了300K左右空间的情况下,可以节省出10%左右的空间,并提高5%的执行速度,节省出了Java卡约30Kb的Flash空间。
结合图2所示,本公开实施例提供一种用于Java卡的字节码压缩方法,包括:
S201,根据Java卡规范对应的字节码列表,构建扩展指令集合,其中,所述扩展指令集合中包括所述字节码列表中的多个字节码对应的扩展字节码。
S202,将所述字节码列表中满足预设使用频率的多个字节码进行组合和重构,生成具有代码功能的宏指令字节码。
S203,遍历查找已经编译完成的Java包对应的字节码文件,将所述字节码文件中符合条件的多个字节码替换为所述扩展字节码和/或宏指令字节码。
采用本公开实施例提供的用于Java卡的字节码压缩方法,通过构建扩展指令集合和压缩满足预设使用频率的多个字节码的方式,将编译完成的Java包对应的字节码文件中符合条件的多个字节码替换为扩展字节码和/或宏指令字节码,在保证代码功能不变的情况下,实现了字节码的压缩,从而节省了字节码空间并且提高了字节码的执行速度。
可选地,结合图3所示,所述根据Java卡规范对应的字节码列表,构建扩展指令集合,包括:
S301,根据Java卡规范确定出所述字节码列表中的空余位置。
S302,根据多个字节码形成的具有代码功能的多个字节码序列,构建与所述字节码序列具有相同代码功能的扩展字节码。
S303,将扩展字节码填充到所述字节码列表中的空余位置中,形成扩展指令集合。
在本申请的实施例中,以<<JCV MSpec CLASSIC 3.0.4>>规范对应的字节码列表为例,在上述Java规范中规定的字节码占用了187个位置,包括0x00至0xB8、0xFE和0xFF,并且空余了0xB9至0xFD,总计69个空余位置,因此,本申请利用该69个空余位置,根据多个字节码形成的具有代码功能的多个字节码序列,构建与所述字节码序列具有相同代码功能的扩展字节码,即扩展字节码同样能够完成特定的字节码序列对应的指令或操作,从而形成扩展指令集合,具体地,如下表1示出了包括若干个字节码列表中的多个字节码对应的扩展字节码:
表1
Figure 377249DEST_PATH_IMAGE001
Figure 644282DEST_PATH_IMAGE002
Figure 108761DEST_PATH_IMAGE003
Figure 167853DEST_PATH_IMAGE004
Figure 426796DEST_PATH_IMAGE005
Figure 181125DEST_PATH_IMAGE006
Figure 183717DEST_PATH_IMAGE007
Figure 972681DEST_PATH_IMAGE008
Figure 402525DEST_PATH_IMAGE009
Figure 785096DEST_PATH_IMAGE010
这样,能将多个字节码才能实现的代码功能,压缩为一个扩展字节码就能够实现,从而节省了Java卡的存储空间。
可选地,结合图4所示,所述将所述字节码列表中满足预设使用频率的多个字节码进行组合和重构,生成具有代码功能的宏指令字节码,包括:
S401,将所述字节码列表中的多个字节码进行顺序组合,得到具有代码功能且满足预设使用频率的多个字节码序列。
S402,对所述多个字节码序列进行重构,合并为一个与所述字节码序列具有相同代码功能的宏指令字节码。
在本申请的实施例中,结合图5所示,本申请通过合并多个字节码(Opcode1、Opcode2、、、)为一个字节码序列,得到具有代码功能且满足预设使用频率的多个字节码序列,进而对使用频率较高的字节码序列进行重构,合并为一个与字节码序列具有代码功能的宏指令字节码(Macro Opcode),进而集成到智能卡系统中。例如,Opcode1 + Opcode2 +Opcode3 -》Macro Opcode1,字节码序列之前占用约3个字节,现在宏指令字节码只占用1个字节。又例如,Opcode4 + Opcode5 + Opcode6 -》Macro Opcode2,字节码序列之前占用约3个字节,现在宏指令字节码只占用1个字节。又例如,Opcode9 + Opcode10 + Opcode11 -》Macro Opcode3,字节码序列之前占用约3个字节,现在宏指令字节码只占用1个字节。总计有原来的12个字节码压缩为6个字节码,节省了50%的空间。
在实际应用中,结合图6所示,本申请字节码序列中的字节码个数不进行具体限定,只要能够实现特定的代码功能或函数功能即可,合并后的新的宏指令字节码MacroOpcode一旦固定了,那么宏指令字节码Macro Opcode的可操作的数据类型也就固定了,同时,宏指令字节码Macro Opcode的结构可以不同,因为其对应的原始字节码不同,例如,宏指令字节码Macro Opcode1可以由字节码SLOAD_1和INVOKESTATIC,00,10压缩得到,MacroOpcode2可以由字节码GETFIELD_A,0和SCONST_0以及SCONST_5压缩得到,Macro Opcode3可以由字节码ALOAD_0和INVOKESPECIAL,0,11压缩得到。
可选地,所述预设使用频率可以是重复率达到30%,或者重复次数超过5次以上。
这样,本申请通过筛选使用频率较高的字节码序列,通过组合编写出具有相同代码功能或函数功能的宏指令字节码,宏指令字节码为一个字码节,相比于原有的字节码序列,可以达到压缩空间的效果,并提高了执行速度。
可选地,结合图6所示,所述遍历查找已经编译完成的Java包对应的字节码文件,将所述字节码文件中符合条件的多个字节码替换为所述扩展字节码和/或宏指令字节码,包括:
S601,获取已经编译完成的Java包对应的字节码文件。
S602,遍历查找所述字节码文件,获取与所述扩展字节码和/或宏指令字节码具有相同的代码功能的多个字节码。
S603,将与所述扩展字节码具有相同的代码功能的多个字节码替换为对应的扩展字节码;或者,将与所述宏指令字节码具有相同的代码功能的多个字节码替换为对应的宏指令字节码。
在本申请的实施例中,本申请的Java卡在编译完一个Java包,并生成对应的字节码文件后,通过遍历查找获取与所述扩展字节码和/或宏指令字节码具有相同的代码功能的多个字节码,将与所述扩展字节码和/或宏指令字节码具有相同的代码功能的多个字节码替换为对应的扩展字节码和/或宏指令字节码,从而完成对字节码的压缩。
具体而言,字节码文件即CAP文件,CAP 文件一共有 12 个组件。分别为:COMPONET_Header, COMPONET_Directory/COMPONET_Applet、COMPONET_Import、COMPONET_ConstantPool、COMPONET_Class、COMPONET_Method、COMPONET_StaticField、COMPONET_ReferenceLocation、COMPONET_Export,COMPONET_Descriptor和COMPONET_Debug。
其中,Applet、Export和Debug组件为可选组件,只有当需要相应功能时才需要加入。每个组件封装为一个CAP包,包含在Jar包中。最后在卡上只保留了5个组件:COMPONET_Method、COMPONET_Class、COMPONET_ConstantPool、COMPONET_StaticField和COMPONET_Export。其余的组件只是安装时提取有用信息而不在Java卡中保存。
Java应用程序写到存储器之后,还不能立刻使用,还需要初始化和个人化。初始化是将一些初始信息下载到永久存储区,它们是卡的通用信息。个人化是将个人信息写到卡上,包括物理个人化和电子个人化。物理个人化是在卡表面写上个人信息;电子个人化是将个人信息写到永久存储器中。
这样,能有效地节省卡片空间,并提高执行速度。
结合图7所示,本公开实施例提供一种智能卡系统,包括:
指令集扩展模块701,被配置为根据Java卡规范对应的字节码列表,构建扩展指令集合,其中,所述扩展指令集合中包括所述字节码列表中的多个字节码对应的扩展字节码;
宏指令构建模块702,被配置为将所述字节码列表中满足预设使用频率的多个字节码进行组合和重构,生成具有代码功能的宏指令字节码;
字节码压缩模块703,被配置为遍历查找已经编译完成的Java包对应的字节码文件,将所述字节码文件中符合条件的多个字节码替换为所述扩展字节码和/或宏指令字节码。
可选地,所述指令集扩展模块701,具体被配置为:
根据Java卡规范确定出所述字节码列表中的空余位置;
根据多个字节码形成的具有代码功能的多个字节码序列,构建与所述字节码序列具有相同代码功能的扩展字节码;
将扩展字节码填充到所述字节码列表中的空余位置中,形成扩展指令集合。
可选地,所述宏指令构建模块702,具体被配置为:
将所述字节码列表中的多个字节码进行顺序组合,得到具有代码功能且满足预设使用频率的多个字节码序列;
对所述多个字节码序列进行重构,合并为一个与所述字节码序列具有相同代码功能的宏指令字节码。
可选地,所述字节码压缩模块703,具体被配置为:
获取已经编译完成的Java包对应的字节码文件;
遍历查找所述字节码文件,获取与所述扩展字节码和/或宏指令字节码具有相同的代码功能的多个字节码;
将与所述扩展字节码和/或宏指令字节码具有相同的代码功能的多个字节码替换为对应的扩展字节码和/或宏指令字节码。
采用本公开实施例提供的智能卡系统,通过构建扩展指令集合和压缩满足预设使用频率的多个字节码的方式,将编译完成的Java包对应的字节码文件中符合条件的多个字节码替换为扩展字节码和/或宏指令字节码,在保证代码功能不变的情况下,实现了字节码的压缩,从而节省了字节码空间并且提高了字节码的执行速度。
结合图8所示,本公开实施例提供一种智能卡系统,包括处理器(processor)800和存储器(memory)801。可选地,该智能卡系统还可以包括通信接口(CommunicationInterface)802和总线803。其中,处理器800、通信接口802、存储器801可以通过总线803完成相互间的通信。通信接口802可以用于信息传输。处理器800可以调用存储器801中的逻辑指令,以执行上述实施例的用于Java卡的字节码压缩方法。
此外,上述的存储器801中的逻辑指令可以通过软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。
存储器801作为一种计算机可读存储介质,可用于存储软件程序、计算机可执行程序,如本公开实施例中的方法对应的程序指令/模块。处理器800通过运行存储在存储器801中的程序指令/模块,从而执行功能应用以及数据处理,即实现上述实施例中用于Java卡的字节码压缩方法。
存储器801可包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序;存储数据区可存储根据终端设备的使用所创建的数据等。此外,存储器801可以包括高速随机存取存储器,还可以包括非易失性存储器。
本公开实施例提供了一种Java智能卡,包括:Java卡本体,以及上述的智能卡系统。智能卡系统被安装于Java卡本体。这里所表述的安装关系,并不仅限于在产品内部放置,还包括了与产品的其他元器件的安装连接,包括但不限于物理连接、电性连接或者信号传输连接等。本领域技术人员可以理解的是,智能卡系统可以适配于可行的产品主体,进而实现其他可行的实施例。
本公开实施例的技术方案可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括一个或多个指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本公开实施例所述方法的全部或部分步骤。而前述的存储介质可以是非暂态存储介质,包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等多种可以存储程序代码的介质,也可以是暂态存储介质。
以上描述和附图充分地示出了本公开的实施例,以使本领域的技术人员能够实践它们。其他实施例可以包括结构的、逻辑的、电气的、过程的以及其他的改变。实施例仅代表可能的变化。除非明确要求,否则单独的部件和功能是可选的,并且操作的顺序可以变化。一些实施例的部分和特征可以被包括在或替换其他实施例的部分和特征。而且,本申请中使用的用词仅用于描述实施例并且不用于限制权利要求。如在实施例以及权利要求的描述中使用的,除非上下文清楚地表明,否则单数形式的“一个”(a)、“一个”(an)和“所述”(the)旨在同样包括复数形式。类似地,如在本申请中所使用的术语“和/或”是指包含一个或一个以上相关联的列出的任何以及所有可能的组合。另外,当用于本申请中时,术语“包括”(comprise)及其变型“包括”(comprises)和/或包括(comprising)等指陈述的特征、整体、步骤、操作、元素,和/或组件的存在,但不排除一个或一个以上其它特征、整体、步骤、操作、元素、组件和/或这些的分组的存在或添加。在没有更多限制的情况下,由语句“包括一个…”限定的要素,并不排除在包括所述要素的过程、方法或者设备中还存在另外的相同要素。本文中,每个实施例重点说明的可以是与其他实施例的不同之处,各个实施例之间相同相似部分可以互相参见。对于实施例公开的方法、产品等而言,如果其与实施例公开的方法部分相对应,那么相关之处可以参见方法部分的描述。
本领域技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,可以取决于技术方案的特定应用和设计约束条件。所述技术人员可以对每个特定的应用来使用不同方法以实现所描述的功能,但是这种实现不应认为超出本公开实施例的范围。所述技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、智能卡系统和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
本文所披露的实施例中,所揭露的方法、产品(包括但不限于智能卡系统、设备等),可以通过其它的方式实现。例如,以上所描述的智能卡系统实施例仅仅是示意性的,例如,所述单元的划分,可以仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另外,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,智能卡系统或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例。另外,在本公开实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
附图中的流程图和框图显示了根据本公开实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这可以依所涉及的功能而定。在附图中的流程图和框图所对应的描述中,不同的方框所对应的操作或步骤也可以以不同于描述中所披露的顺序发生,有时不同的操作或步骤之间不存在特定的顺序。例如,两个连续的操作或步骤实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这可以依所涉及的功能而定。框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。

Claims (10)

1.一种用于Java卡的字节码压缩方法,其特征在于,包括:
根据Java卡规范对应的字节码列表,构建扩展指令集合;其中,所述扩展指令集合中包括所述字节码列表中的多个字节码对应的扩展字节码;
将所述字节码列表中满足预设使用频率的多个字节码进行组合和重构,生成具有代码功能的宏指令字节码;
遍历查找已经编译完成的Java包对应的字节码文件,将所述字节码文件中符合条件的多个字节码替换为所述扩展字节码和/或宏指令字节码。
2.根据权利要求1所述的字节码压缩方法,其特征在于,所述根据Java卡规范对应的字节码列表,构建扩展指令集合,包括:
根据Java卡规范确定出所述字节码列表中的空余位置;
根据多个字节码形成的具有代码功能的多个字节码序列,构建与所述字节码序列具有相同代码功能的扩展字节码;
将扩展字节码填充到所述字节码列表中的空余位置中,形成扩展指令集合。
3.根据权利要求1所述的字节码压缩方法,其特征在于,所述将所述字节码列表中满足预设使用频率的多个字节码进行组合和重构,生成具有代码功能的宏指令字节码,包括:
将所述字节码列表中的多个字节码进行顺序组合,得到具有代码功能且满足预设使用频率的多个字节码序列;
对所述多个字节码序列进行重构,合并为一个与所述字节码序列具有相同代码功能的宏指令字节码。
4.根据权利要求1所述的字节码压缩方法,其特征在于,所述遍历查找已经编译完成的Java包对应的字节码文件,将所述字节码文件中符合条件的多个字节码替换为所述扩展字节码和/或宏指令字节码,包括:
获取已经编译完成的Java包对应的字节码文件;
遍历查找所述字节码文件,获取与所述扩展字节码和/或宏指令字节码具有相同的代码功能的多个字节码;
将与所述扩展字节码具有相同的代码功能的多个字节码替换为对应的扩展字节码;或者,
将与所述宏指令字节码具有相同的代码功能的多个字节码替换为对应的宏指令字节码。
5.一种智能卡系统,其特征在于,包括:
指令集扩展模块,被配置为根据Java卡规范对应的字节码列表,构建扩展指令集合;其中,所述扩展指令集合中包括所述字节码列表中的多个字节码对应的扩展字节码;
宏指令构建模块,被配置为将所述字节码列表中满足预设使用频率的多个字节码进行组合和重构,生成具有代码功能的宏指令字节码;
字节码压缩模块,被配置为遍历查找已经编译完成的Java包对应的字节码文件,将所述字节码文件中符合条件的多个字节码替换为所述扩展字节码和/或宏指令字节码。
6.根据权利要求5所述的智能卡系统,其特征在于,所述指令集扩展模块,具体被配置为:
根据Java卡规范确定出所述字节码列表中的空余位置;
根据多个字节码形成的具有代码功能的多个字节码序列,构建与所述字节码序列具有相同代码功能的扩展字节码;
将扩展字节码填充到所述字节码列表中的空余位置中,形成扩展指令集合。
7.根据权利要求5所述的智能卡系统,其特征在于,所述宏指令构建模块,具体被配置为:
将所述字节码列表中的多个字节码进行顺序组合,得到具有代码功能且满足预设使用频率的多个字节码序列;
对所述多个字节码序列进行重构,合并为一个与所述字节码序列具有相同代码功能的宏指令字节码。
8.根据权利要求5所述的智能卡系统,其特征在于,所述字节码压缩模块,具体被配置为:
获取已经编译完成的Java包对应的字节码文件;
遍历查找所述字节码文件,获取与所述扩展字节码和/或宏指令字节码具有相同的代码功能的多个字节码;
将与所述扩展字节码具有相同的代码功能的多个字节码替换为对应的扩展字节码;或者,
将与所述宏指令字节码具有相同的代码功能的多个字节码替换为对应的宏指令字节码。
9.一种智能卡系统,包括处理器和存储有程序指令的存储器,其特征在于,所述处理器被配置为在运行所述程序指令时,执行如权利要求1至4任一项所述的用于Java卡的字节码压缩方法。
10.一种Java智能卡,其特征在于,包括:
Java卡本体;
如权利要求9所述的智能卡系统,被安装于所述Java卡本体。
CN202211533686.1A 2022-12-02 2022-12-02 用于Java卡的字节码压缩方法及智能卡系统 Pending CN115618910A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202211533686.1A CN115618910A (zh) 2022-12-02 2022-12-02 用于Java卡的字节码压缩方法及智能卡系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202211533686.1A CN115618910A (zh) 2022-12-02 2022-12-02 用于Java卡的字节码压缩方法及智能卡系统

Publications (1)

Publication Number Publication Date
CN115618910A true CN115618910A (zh) 2023-01-17

Family

ID=84880793

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202211533686.1A Pending CN115618910A (zh) 2022-12-02 2022-12-02 用于Java卡的字节码压缩方法及智能卡系统

Country Status (1)

Country Link
CN (1) CN115618910A (zh)

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101739280A (zh) * 2008-11-11 2010-06-16 爱思开电讯投资(中国)有限公司 用于java卡的字节码优化系统和方法
EP3026551A1 (en) * 2014-11-26 2016-06-01 Giesecke & Devrient GmbH Methods and devices for compressing byte code for smart cards
CN105653351A (zh) * 2015-12-30 2016-06-08 北京博思汇众科技股份有限公司 java卡虚拟机的优化方法及系统

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101739280A (zh) * 2008-11-11 2010-06-16 爱思开电讯投资(中国)有限公司 用于java卡的字节码优化系统和方法
EP3026551A1 (en) * 2014-11-26 2016-06-01 Giesecke & Devrient GmbH Methods and devices for compressing byte code for smart cards
CN105653351A (zh) * 2015-12-30 2016-06-08 北京博思汇众科技股份有限公司 java卡虚拟机的优化方法及系统

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
向文 等: "基于混合模式的Java卡字节码优化器" *
祝攀攀: "Java智能卡操作系统的体系结构及关键技术研究" *
韩晶: "Java卡字节码优化方法的研究与实践" *

Similar Documents

Publication Publication Date Title
US8881119B2 (en) Computer program product containing instructions for providing a processor the capability of executing an application derived from a compiled form
CN102037499B (zh) Nfc移动通信设备和rfid读取器
RU2571364C2 (ru) Способ и компьютерная система для скрывания выбранных установленных функций многофункциональной команды
US7613907B2 (en) Embedded software camouflage against code reverse engineering
US8943486B2 (en) Multiple instruction execution mode resource-constrained device
US9449020B2 (en) Method for smart card to process CAP file
CN109598107A (zh) 一种基于应用安装包文件的代码转换方法及装置
EP1717723A1 (en) Improved virtual machine or hardware processor for IC-card portable electronic devices
CN106293529A (zh) 一种智能卡存储数据的方法、装置和智能卡
CN105653351B (zh) java卡虚拟机的优化方法及系统
AU716558B2 (en) Portable, secure transaction system for programmable, intelligent devices
CN114691391A (zh) 增强型包过滤器的内核态程序的超级调用方法及装置
CN115618910A (zh) 用于Java卡的字节码压缩方法及智能卡系统
Husemann Standards in the smart card world
CN101425120B (zh) 读卡器及其执行方法
CN104077173A (zh) 智能卡内java程序指令的执行方法及智能卡
CN115906014A (zh) 一种数据处理方法及相关装置
CN109840396B (zh) 提供安全性的设备和方法以及执行安全性以保护共享对象的代码的设备和方法
RU2382409C2 (ru) Чип-карта, имеющая по меньшей мере одно приложение
CN101770368B (zh) .net文件中命名空间的压缩方法和装置
JP5202634B2 (ja) Mifareメモリをデフラギングするモバイル通信装置及び方法
CN101765854B (zh) 用于恢复mifare存储器的移动通信设备和方法
Eletriby et al. High performance Java Card operating system
CN111143083B (zh) 数据的传输方法和装置、存储介质、电子装置
Iooss et al. Ghost in the Wireless, iwlwifi edition

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
RJ01 Rejection of invention patent application after publication
RJ01 Rejection of invention patent application after publication

Application publication date: 20230117