System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技术实现步骤摘要】
本专利技术涉及数据处理,并且更具体地,涉及一种java字节码的处理方法及系统。
技术介绍
1、java源代码经过编译后,生成容易被反编译的class字节码,通过反编译可以轻易将源代码进行还原,造成源代码泄露,产生信息安全问题。从而造成经济损失,因此保护java源代码的安全性尤为重要。
2、jar(java archive)文件是java源代码经过编译后的一种归档文件格式,用于将多个相关字节码文件、代码类、资源文件和元数据等打包后形成的一个单独文件,可直接运行或集成至其他java项目中。
3、在私有化部署时或用户集成jar包时,若直接提供jar文件,面临着反编译风险,已有方法需要根据对应运行环境如cpu架构、操作系统等条件对应开发不同的解密动态链接库,开发及维护成本较高,亦或在运行效率方面有所损耗。
4、因此,需要一种新的java字节码的处理方法。
技术实现思路
1、本专利技术提出一种java字节码的处理方法及系统,以解决如何高效地对java字节码进行处理的问题。
2、为了解决上述问题,根据本专利技术的一个方面,提供了一种java字节码的处理方法,所述方法包括:
3、对第一预设格式的目标待加密文件进行重打包,以释放所述目标待加密文件中的资源文件至待打包文件夹中;
4、基于配置需求确定第二预设格式的待加密子文件的文件信息,以获取待加密子文件列表;
5、获取解密引擎代码,并将所述解密引擎代码注入至所述待打
6、生成密钥信息,将所述密钥信息存储为密钥仓库,为所述密钥仓库生成随机密码,并将所述密钥仓库和随机密码存储至所述待打包文件夹中;
7、基于所述待加密子文件列表从所述资源文件中进行待加密子文件的提取,并利用所述密钥信息对提取的待加密子文件进行加密,获取第一加密文件;
8、删除所述待打包文件夹中所述待加密子文件列表对应的所有待加密子文件的方法代码,删除maven文件夹,并对所述待打包文件夹进行打包,以获取第一预设格式的打包文件。
9、优选地,其中所述方法还包括:
10、添加所述解密引擎代码的java agent运行信息至所述待打包文件夹中,以基于所述java agent运行信息加载所述解密引擎代码。
11、优选地,其中所述方法还包括:
12、运行所述打包文件,并使用所述解密引擎代码的java agent运行信息加载所述解密引擎代码;
13、读取所述目标加密文件中的第一加密文件,读取所述密钥仓库和随机密码,并基于所述密钥仓库和随机密码获取所述密钥信息;
14、基于所述密钥信息和解密引擎代码对所述第一加密文件进行解密,以获取待加密子文件,并将所述待加密子文件重写回对应的原文件中,完成解密。
15、优选地,其中所述第一预设格式为:jar格式;第二预设格式为.class格式。
16、优选地,其中所述密钥信息为sm2密钥对。
17、根据本专利技术的另一个方面,提供了一种java字节码的处理系统,所述系统包括:
18、重打包单元,用于对第一预设格式的目标待加密文件进行重打包,以释放所述目标待加密文件中的资源文件至待打包文件夹中;
19、待加密子文件列表确定单元,用于基于配置需求确定第二预设格式的待加密子文件的文件信息,以获取待加密子文件列表;
20、解密引擎代码注入单元,用于获取解密引擎代码,并将所述解密引擎代码注入至所述待打包文件夹中;
21、密钥生成单元,用于生成密钥信息,将所述密钥信息存储为密钥仓库,为所述密钥仓库生成随机密码,并将所述密钥仓库和随机密码存储至所述待打包文件夹中;
22、加密单元,用于基于所述待加密子文件列表从所述资源文件中进行待加密子文件的提取,并利用所述密钥信息对提取的待加密子文件进行加密,获取第一加密文件;
23、文件打包单元,用于删除所述待打包文件夹中所述待加密子文件列表对应的所有待加密子文件的系统代码,删除maven文件夹,并对所述待打包文件夹进行打包,以获取第一预设格式的打包文件。
24、优选地,其中所述解密引擎代码注入单元,还用于:
25、添加所述解密引擎代码的java agent运行信息至所述待打包文件夹中,以基于所述java agent运行信息加载所述解密引擎代码。
26、优选地,其中所述系统还包括:
27、打包文件运行单元,用于运行所述打包文件,并使用所述解密引擎代码的javaagent运行信息加载所述解密引擎代码;
28、信息读取单元,用于读取所述目标加密文件中的第一加密文件,读取所述密钥仓库和随机密码,并基于所述密钥仓库和随机密码获取所述密钥信息;
29、解密单元,用于基于所述密钥信息和解密引擎代码对所述第一加密文件进行解密,以获取待加密子文件,并将所述待加密子文件重写回对应的原文件中,完成解密。
30、优选地,其中所述第一预设格式为:jar格式;第二预设格式为.class格式。
31、优选地,其中所述密钥信息为sm2密钥对。
32、本专利技术提供了一种java字节码的处理方法及系统,包括:对第一预设格式的目标待加密文件进行重打包,以释放所述目标待加密文件中的资源文件至待打包文件夹中;基于配置需求确定第二预设格式的待加密子文件的文件信息,以获取待加密子文件列表;获取解密引擎代码,并将所述解密引擎代码注入至所述待打包文件夹中;生成密钥信息,将所述密钥信息存储为密钥仓库,为所述密钥仓库生成随机密码,并将所述密钥仓库和随机密码存储至所述待打包文件夹中;基于所述待加密子文件列表从所述资源文件中进行待加密子文件的提取,并利用所述密钥信息对提取的待加密子文件进行加密,获取第一加密文件;删除所述待打包文件夹中所述待加密子文件列表对应的所有待加密子文件的方法代码,删除maven文件夹,并对所述待打包文件夹进行打包,以获取第一预设格式的打包文件。本专利技术强化了java代码编译后的jar文件安全性,在兼顾开发及维护成本较低的同时可以有效保护jar文件,提高反编译难度,对原项目侵入性低,泛用性高,可快速集成,运行时执行解密,运行效率基本不受影响。
本文档来自技高网...【技术保护点】
1.一种Java字节码的处理方法,其特征在于,所述方法包括:
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
3.根据权利要求2所述的方法,其特征在于,所述方法还包括:
4.根据权利要求1所述的方法,其特征在于,所述第一预设格式为:Jar格式;第二预设格式为.class格式。
5.根据权利要求1所述的方法,其特征在于,所述密钥信息为SM2密钥对。
6.一种Java字节码的处理系统,其特征在于,所述系统包括:
7.根据权利要求6所述的系统,其特征在于,所述解密引擎代码注入单元,还用于:
8.根据权利要求7所述的系统,其特征在于,所述系统还包括:
9.根据权利要求6所述的系统,其特征在于,所述第一预设格式为:Jar格式;第二预设格式为.class格式。
10.根据权利要求6所述的系统,其特征在于,所述密钥信息为SM2密钥对。
【技术特征摘要】
1.一种java字节码的处理方法,其特征在于,所述方法包括:
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
3.根据权利要求2所述的方法,其特征在于,所述方法还包括:
4.根据权利要求1所述的方法,其特征在于,所述第一预设格式为:jar格式;第二预设格式为.class格式。
5.根据权利要求1所述的方法,其特征在于,所述密钥信息为sm2密钥对。
6....
【专利技术属性】
技术研发人员:赵晋,卞芳,张宇驰,李晓,周勇,张梦,刘茜,
申请(专利权)人:航天信息股份有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。