System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind() 一种针对JAVA软件源码授权加密保护的方法技术_技高网

一种针对JAVA软件源码授权加密保护的方法技术

技术编号:41272880 阅读:4 留言:0更新日期:2024-05-11 09:26
本发明专利技术公开了一种针对JAVA软件源码授权加密保护的方法,包括如下步骤:软件提供者将打包后的原始JAVA软件包进行加密,得到加密后的JAVA软件包与基础加密算子R;软件提供者向软件使用者提供授权码生成软件,软件使用者使用授权码生成软件在被授权的机器上生成授权码发送给软件提供者;软件提供者将基础加密算子R和授权码封装入解密代理原始软件包,生成提供给软件使用者的解密代理;软件使用者通过解密代理运行加密后的JAVA软件包,校验当前机器环境为被授权机器后,将软件解密并执行。本发明专利技术方法仅对方法体进行加密,在保证软件安全性同时,最大程度保证了与现有框架,如Spring的兼容性;更有效地保护软件源码不被泄露。

【技术实现步骤摘要】

本专利技术涉及一种授权加密保护的方法,具体涉及一种针对java软件源码授权加密保护的方法。


技术介绍

1、随着计算机和移动端技术的快速发展,java编程语言广泛应用于各种软件开发领域。然而,这也带来了一系列的软件保护和授权的挑战。传统的软件保护方法如代码混淆、加密算法等已经无法满足对java软件更高级的保护需求。此外,为了保护商业软件的版权,开发者需要确保软件仅在经过授权的机器上运行。

2、传统的java软件保护方法通常集中在源代码层面,容易受到反编译和逆向工程的攻击。此外,现有的授权机制往往基于软件许可证和硬件锁等,无法提供足够的保护和灵活性。

3、因此,亟需一种针对java软件源码授权加密保护的方法,来解决传统方法所面临的软件保护和授权的局限性问题。


技术实现思路

1、本专利技术针对现有技术中的不足,提供一种针对java软件源码授权加密保护的方法,来解决传统方法无法满足现阶段软件保护和授权的需求的问题。

2、为实现上述目的,本专利技术采用以下技术方案:

3、一种针对java软件源码授权加密保护的方法,其特征在于,包括如下步骤:

4、步骤1,软件提供者将打包后的原始java软件包进行加密,得到加密后的java软件包与基础加密算子r;加密时,仅对方法体进行加密,加密使用aes-ctr算法;

5、步骤2,软件提供者向软件使用者提供授权码生成软件,软件使用者使用授权码生成软件在被授权的机器上生成授权码,发送给软件提供者;

6、步骤3,软件提供者将上述所得的基础加密算子r和授权码封装入解密代理原始软件包,生成提供给软件使用者的解密代理,解密代理原始软件包包含软件解密算法的实现;

7、步骤4,软件使用者通过解密代理运行加密后的java软件包;解密代理获取当前机器的信息,与解密代理中包含已授权的机器信息的授权码的信息进行比对,校验当前机器环境为被授权机器后,将软件解密并执行。

8、为优化上述技术方案,采取的具体措施还包括:

9、进一步地,授权码包含的信息包括机器mac地址,硬盘序列号和cpu id信息。

10、进一步地,所述步骤1包括如下步骤:

11、生成一串32位真随机字符串作为基础加密算子r,解析原始java软件包,依次处理每个需要加密的class字节码文件;按照jvm字节码规范解析class字节码文件,修改class字节码文件的魔数标识,将第五字节修改为0x88,并标识该class字节码文件已被加密;

12、记录该class字节码文件代表的类的全限定名,生成32位md5校验码mi,将基础加密算子r与校验码mi进行异或运算,得到该class字节码文件的专属密码算子ri;继续解析class字节码文件内容,找到所有方法的"code"属性内容,该内容为方法体,使用专属密码算子ri作为加密密钥,用aes-ctr-256算法对方法体二进制内容进行加密,得到加密方法体,并替换原"code"属性内容;

13、所有需要加密的class字节码文件加密完成后,替换原始的明文class字节码文件,并重新打包为加密后的java软件包。

14、进一步地,所述步骤2包括如下步骤:

15、软件提供者将授权码生成软件发送至软件使用者,软件使用者在所有需要运行的机器上依次运行授权码生成软件,使得每个机器上均生成一组授权码;授权码生成软件用软件内置的非对称密钥信息对机器mac地址,硬盘序列号和cpu id信息进行封装加密,生成最终的授权码;软件使用者将每台机器上生成的授权码,统一发送给软件提供者。

16、进一步地,所述解密代理以c语言开发为一个遵循jvmti规范的java代理,在jvmti类加载回调中可实现软件的解密算法;解密代理原始软件包中解密需要的密钥替换为基础加密算子r,解密代理可运行的授权信息替换为授权码。

17、进一步地,所述步骤3包括如下步骤:

18、软件提供者将上述所得的基础加密算子r和授权码封装入解密代理原始软件包中,重新打包生成针对专用的解密代理;其中,基础加密算子r和授权码采用混淆方式封装至解密代理原始软件包的代码中。

19、进一步地,封装的所述基础加密算子r和授权码在代码中进行二次加密和物理分割存放。

20、进一步地,所述步骤4包括如下步骤:

21、软件提供者将加密后的java软件包和解密代理发送给软件使用者,软件使用者使用java命令,并使用"agentpath"参数指定解密代理为java软件运行的代理程序,开始java软件包的运行;

22、解密代理在加密后的java软件包被jvm加载前进行授权检测,解密代理获取当前机器的mac地址、硬盘序列号与cpu id信息,并与解密代理中内置的授权码信息进行比对,如果当前机器硬件信息在授权码信息中,则继续后续解密执行操作,否则的话,直接终止程序的运行;

23、授权校验通过后,解密代理按照加密时的逆向操作进行class字节码文件的解密;解密代理向jvm中注入class类文件加载回调,每当java类要被加载时,解密代理回调首先被运行;解密代理回调解密首先判断class字节码文件的魔数,判断第五个字节是否为加密时更改的魔数0x88,如果不是,则该类没有被加密,直接返回原始字节信息,交由jvm执行,否则将0x88替换为原始值0x00,继续解析字节码信息;

24、解密代理根据该class字节码文件代表的类的全限定名生成32位md5校验码mi,mi与解密代理中预置的基础解密算子r进行异或操作,生成该类的专属密码算子ri;解析代理继续解析,获取所有方法的"code"属性内容,该内容为加密的方法体字节码,使用专属密码算子ri,通过aes-ctr-256算法进行解密操作,得到完整的方法体解密字节码内容,返回至jvm加载器;jvm加载解密后的类文件,正常执行程序。

25、进一步地,一种计算机可读存储介质,存储有计算机程序,其特征在于:所述计算机程序使计算机执行如上述的一种针对java软件源码授权加密保护的方法。

26、进一步地,一种电子设备,其特征在于,包括:存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行计算机程序时,实现如上述的一种针对java软件源码授权加密保护的方法。

27、本专利技术的有益效果是:

28、灵活的加密范围:本专利技术只对方法体部分进行加密,而不是整个类文件,这为兼容spring框架提供了可能。spring框架在类加载前会对类文件进行解析并创建代理,因此只加密方法体不会影响spring框架的正常运行。这种灵活的加密范围保证了软件的稳定性和兼容性。

29、无代码入侵的授权方式:本专利技术提供了一种无代码入侵的授权方式,使得开发过程中无需修改代码。对于已经生成的代码包,开发者可以直接对其进行加密授权保护,不需要额外的开发步骤。这种授本文档来自技高网...

【技术保护点】

1.一种针对JAVA软件源码授权加密保护的方法,其特征在于,包括如下步骤:

2.根据权利要求1所述的一种针对JAVA软件源码授权加密保护的方法,其特征在于:授权码包含的信息包括机器MAC地址,硬盘序列号和CPU ID信息。

3.根据权利要求1所述的一种针对JAVA软件源码授权加密保护的方法,其特征在于,所述步骤1包括如下步骤:

4.根据权利要求1所述的一种针对JAVA软件源码授权加密保护的方法,其特征在于,所述步骤2包括如下步骤:

5.根据权利要求1所述的一种针对JAVA软件源码授权加密保护的方法,其特征在于:所述解密代理以C语言开发为一个遵循JVMTI规范的JAVA代理,在JVMTI类加载回调中可实现软件的解密算法;解密代理原始软件包中解密需要的密钥替换为基础加密算子R,解密代理可运行的授权信息替换为授权码。

6.根据权利要求1所述的一种针对JAVA软件源码授权加密保护的方法,其特征在于,所述步骤3包括如下步骤:

7.根据权利要求6所述的一种针对JAVA软件源码授权加密保护的方法,其特征在于:封装的所述基础加密算子R和授权码在代码中进行二次加密和物理分割存放。

8.根据权利要求1所述的一种针对JAVA软件源码授权加密保护的方法,其特征在于,所述步骤4包括如下步骤:

9.一种计算机可读存储介质,存储有计算机程序,其特征在于,所述计算机程序使计算机执行如权利要求1-8任一项所述的一种针对JAVA软件源码授权加密保护的方法。

10.一种电子设备,其特征在于,包括:存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行计算机程序时,实现如权利要求1-8任一项所述的一种针对JAVA软件源码授权加密保护的方法。

...

【技术特征摘要】

1.一种针对java软件源码授权加密保护的方法,其特征在于,包括如下步骤:

2.根据权利要求1所述的一种针对java软件源码授权加密保护的方法,其特征在于:授权码包含的信息包括机器mac地址,硬盘序列号和cpu id信息。

3.根据权利要求1所述的一种针对java软件源码授权加密保护的方法,其特征在于,所述步骤1包括如下步骤:

4.根据权利要求1所述的一种针对java软件源码授权加密保护的方法,其特征在于,所述步骤2包括如下步骤:

5.根据权利要求1所述的一种针对java软件源码授权加密保护的方法,其特征在于:所述解密代理以c语言开发为一个遵循jvmti规范的java代理,在jvmti类加载回调中可实现软件的解密算法;解密代理原始软件包中解密需要的密钥替换为基础加密算子r,解密代理可运行的授权信息替换为授权码。

<...

【专利技术属性】
技术研发人员:汪滨李成钢蒋思玉赵志宏康鹏
申请(专利权)人:中电信数智科技有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1