本发明涉及数据处理,具体涉及一种软件开发数据加密保护方法及系统。
背景技术:
1、随着用户对计算机软件功能需求不断提高,计算机软件越来越复杂,从而使得开发商必须投入更多的人力、物力以及时间研发软件,由于计算机软件在开发的过程中,存在被修改和复制的风险,所以开发人员在开发完成后必须对计算机软件采取保护措施,以防止软件遭到窃取或破坏。
2、现有对正在开发的软件的保护方法为将加密算法对软件开发的数据进行加密,但其防护效果差、加密的方法单一,当遇到窃取软件开发的数据时,其开发的软件数据很容易被窃取或破坏掉,进而影响软件开发的进程。
技术实现思路
1、为了解决上述问题,本发明提供一种软件开发数据加密保护方法及系统。
2、本发明一个实施例提供了一种软件开发数据加密保护方法,该方法包括以下步骤:
3、获取若干个软件开发数据模块;
4、获取每个软件开发数据模块的函数组,每个软件开发数据模块的函数组包括若干个函数;
5、获取每个软件开发数据模块的函数组中每个函数的函数篇幅参数;获取每个软件开发数据模块的函数组中每个函数的函数结构相似参量;获取每个软件开发数据模块的函数组中每个函数的函数逻辑相似参量;根据每个软件开发数据模块的函数组中每个函数的函数结构相似参量和函数逻辑相似参量,获取每个软件开发数据模块的函数组中每个函数的重复参值;
6、获取每个软件开发数据模块的函数组中每个函数的引用率;根据每个软件开发数据模块的函数组中每个函数的函数篇幅参数、重复参值和引用率,获取每个软件开发数据模块的函数组中每个函数的核心率;根据每个软件开发数据模块的函数组中每个函数的核心率,获取每个软件开发数据模块的核心代码;将每个软件开发数据模块的核心代码混淆后和其他代码进行压缩加密,得到加密后软件开发数据。
7、优选的,所述获取每个软件开发数据模块的函数组,包括的具体方法为:
8、获取每个软件开发数据模块中包含的所有函数,并记为一个函数组;软件开发数据模块的函数组包含若干个函数。
9、优选的,所述获取每个软件开发数据模块的函数组中每个函数的函数篇幅参数,包括的具体方法为:
10、对于第个软件开发数据模块的函数组中第个函数,将第个函数的注释代码行数与第个函数的代码行数的比值,作为第个函数的注释率;则第个软件开发数据模块的函数组中第个函数的函数篇幅参数的计算表达式为:
11、
12、式中,表示第个软件开发数据模块的函数组中第个函数的函数篇幅参数;表示第个软件开发数据模块的函数组中第个函数的代码行数;表示第个软件开发数据模块的函数组中第个函数的注释率;表示第个软件开发数据模块的函数组中所有函数的代码总行数;表示以自然常数为底数的对数函数。
13、优选的,所述获取每个软件开发数据模块的函数组中每个函数的函数结构相似参量,包括的具体方法为:
14、对于每个软件开发数据模块的函数组中第个函数和第个函数,若第个函数和第个函数的函数类型相同,则将0作为第个函数和第个函数的类型相似值;若第个函数和第个函数的函数类型不相同,则将1作为第个函数和第个函数的类型相似值;将第个函数的调用函数库集合记为第一集合,将第个函数的调用函数库集合记为第二集合,将第一集合和第二集合的交并比作为第个函数和第个函数的结构相似值;则第个软件开发数据模块的函数组中第个函数的函数结构相似参量的计算表达式为:
15、
16、式中,表示第个软件开发数据模块的函数组中第个函数的函数结构相似参量;表示第个软件开发数据模块的函数组中所有函数总数量;表示第个软件开发数据模块的函数组中第个函数和第个函数的结构相似值;表示第个软件开发数据模块的函数组中第个函数与第个函数的类型相似值;表示第个软件开发数据模块的函数组中第个函数的调用函数库集合中调用函数的总数量;表示第个软件开发数据模块的函数组中第个函数的调用函数库集合中调用函数的总数量;表示以自然常数为底数的指数函数;表示取绝对值。
17、优选的,所述获取每个软件开发数据模块的函数组中每个函数的函数逻辑相似参量,包括的具体方法为:
18、对于第个软件开发数据模块的函数组,利用语法树分析法将第个软件开发数据模块的函数组中的所有函数转换为语法树;则第个软件开发数据模块的函数组中第个函数的函数逻辑相似参量的计算表达式为:
19、
20、式中,表示第个软件开发数据模块的函数组中第个函数的函数逻辑相似参量;表示第个软件开发数据模块的函数组中所有函数总数量;表示第个软件开发数据模块的函数组中第个函数的语法树字符串;表示第个软件开发数据模块的函数组中第个函数的语法树字符串;表示取绝对值;表示dtw距离。
21、优选的,所述根据每个软件开发数据模块的函数组中每个函数的函数结构相似参量和函数逻辑相似参量,获取每个软件开发数据模块的函数组中每个函数的重复参值,包括的具体方法为:
22、预设两个参数,将参数与第个软件开发数据模块的函数组中第个函数的函数结构相似参量的乘积,记为第一乘积;将参数与第个软件开发数据模块的函数组中第个函数的函数逻辑相似参量的乘积,记为第二乘积;将第一乘积和第二乘积的和,作为第个软件开发数据模块的函数组中第个函数的重复参值。
23、优选的,所述获取每个软件开发数据模块的函数组中每个函数的引用率,包括的具体方法为:
24、对于第个软件开发数据模块的函数组中第个函数,将第个函数被第个软件开发数据模块的函数组中其他所有函数引用的总次数与第个软件开发数据模块的函数组中所有函数总数量的比值,作为第个函数的引用率。
25、优选的,所述根据每个软件开发数据模块的函数组中每个函数的函数篇幅参数、重复参值和引用率,获取每个软件开发数据模块的函数组中每个函数的核心率的具体公式为:
26、
27、式中,表示第个软件开发数据模块的函数组中第个函数的核心率;表示第个软件开发数据模块的函数组中第个函数的引用率;表示第个软件开发数据模块的函数组中第个函数的函数篇幅参数;表示第个软件开发数据模块的函数组中第个函数的重复参值;表示以自然常数为底数的指数函数。
28、优选的,所述将每个软件开发数据模块的核心代码混淆后和其他代码进行压缩加密,得到加密后软件开发数据,包括的具体方法为:
29、首先,利用路径分支混淆技术对每个软件开发数据模块的核心代码进行代码混淆,获得每个软件开发数据模块混淆后的核心代码;其次,将每个软件开发数据模块混淆后的核心代码放回到源代码中,整合为项目代码文件;最后,利用非对称加密技术对项目代码文件进行加密,最终得到加密后软件开发数据。
30、本发明的实施例提供了一种软件开发数据加密保护系统,该系统包括数据采集模块、数据分割模块、数据特征获取模块以及数据压缩加密模块,其中:
31、数据采集模块,用于获取若干个软件开发数据模块;
32、数据分割模块,用于获取每个软件开发数据模块的函数组,每个软件开发数据模块的函数组包括若干个函数;
33、数据特征获取模块,用于获取每个软件开发数据模块的函数组中每个函数的函数篇幅参数;获取每个软件开发数据模块的函数组中每个函数的函数结构相似参量;获取每个软件开发数据模块的函数组中每个函数的函数逻辑相似参量;根据每个软件开发数据模块的函数组中每个函数的函数结构相似参量和函数逻辑相似参量,获取每个软件开发数据模块的函数组中每个函数的重复参值;
34、数据压缩加密模块,用于获取每个软件开发数据模块的函数组中每个函数的引用率;根据每个软件开发数据模块的函数组中每个函数的函数篇幅参数、重复参值和引用率,获取每个软件开发数据模块的函数组中每个函数的核心率;根据每个软件开发数据模块的函数组中每个函数的核心率,获取每个软件开发数据模块的核心代码;将每个软件开发数据模块的核心代码混淆后和其他代码进行压缩加密,得到加密后软件开发数据。
35、本发明的技术方案的有益效果是:针对现有将加密算法对软件开发的数据进行加密,因为防护效果差、加密的方法单一,当遇到窃取软件开发的数据时,其容易被窃取或破坏掉,进而影响软件开发的进程的问题;本发明对代码函数进行关键性分析,进而得到关键代码,从而对关键代码与其他代码进行代码混淆,随后将全部代码进行压缩加密,从而在保证了软件开发代码的安全性的同时,使得核心代码更加安全可靠,保护了开发者的合法权益和整个软件系统的可维护性以及拓展性。