欢迎来到知嘟嘟! 联系电话:13095918853 卖家免费入驻,海量在线求购! 卖家免费入驻,海量在线求购!
知嘟嘟
我要发布
联系电话:13095918853
知嘟嘟经纪人
收藏
专利号: 2021100968597
申请人: 广西大学
专利类型:发明专利
专利状态:已下证
专利领域: 计算;推算;计数
更新日期:2023-12-11
缴费截止日期: 暂无
价格&联系人
年费信息
委托购买

摘要:

权利要求书:

1.一种基于编码特征的SQL代码抄袭检测方法,其特征在于,步骤包括:

S1.编码特征提取:输入指定编码任务下所有的待检测SQL代码,分别提取出各待检测SQL代码中用于表征编写者在当前SQL编码任务下编码特性的特定编码特征,以及提取用于表征编写者在当前SQL编码任务下所展现出的泛化性编码特性的泛化编码特征,所述特定编码特征包括SQL关键字特征、SCHEMA特征、函数特征、关系运算符特征、括号特征、空格特征、缩进特征、换行特征中任意一种或两种以上的组合,所述SQL关键字特征为用于表征SQL标准中指定的关键字使用时所对应的编码特性的特征,所述SCHEMA特征为用于表征SCHEMA信息使用时所对应的编码特性的特征,所述函数特征为用于表征使用函数所对应的编码特性的特征,所述关系运算符特征为用于表征使用关系运算符所对应的编码特性的特征,所述括号特征为用于表征使用括号所对应的编码特性的特征,所述空格特征为用于表征使用空格所对应的编码特性的特征,所述缩进特征为用于表征缩进使用时所对应的编码特性的特征,所述换行特征为用于表征使用换行时所对应的编码特性的特征;

所述泛化编码特征包括泛化关键字特征、泛化括号特征、泛化换行特征、泛化空格特征、泛化缩进特征、字段名修饰特征中任意一种或两种以上的组合,所述泛化关键字特征用于记录编写者在各个SQL子句中针对主关键字的大小写书写特征,所述泛化括号特征用于只记录编写者在各类SQL子句中是否使用了括号,所述泛化换行特征用于只记录编写者在各类SQL子句中是否会对子句进行换行处理,所述泛化空格特征用于只记录编写者在各类SQL子句中是否存在连续使用多于两个空格的情况,所述泛化缩进特征用于只记录编写者在各类SQL子句中是否在子句中使用缩进符,所述字段名修饰特征用于记录编写者在完成单表查询任务的SELECT子句中是否使用了表名对字段进行修饰;

S2.抄袭群体检测:将提取得到的所有特定编码特征进行聚类,根据聚类结果确定得到抄袭群体,将所述特定编码特征属于同一类的待检测SQL代码作为一个抄袭群体;

S3.泛化特征匹配:分别获取所述抄袭群体中各待检测SQL代码进行判断,判断时将待检测SQL代码的泛化编码特征与待检测SQL代码所对应的编写者的历史泛化编码特征进行比较,所述历史泛化编码特征由对应编写者多个历史SQL代码数据提取得到的泛化编码特征计算得到,根据判断结果判定待检测SQL代码是否属于抄袭或是被抄袭;

S4.抄袭检测输出:将各所述抄袭群体中各待检测SQL代码的抄袭判定结果输出。

2.根据权利要求1所述的基于编码特征的SQL代码抄袭检测方法,其特征在于,所述步骤S2的步骤包括:

S21.将提取得到的所有特定编码特征进行归一化处理,得到处理后的特定编码特征;

S22.对所述处理后的特定编码特征进行聚类,输出聚类得到的聚类簇;

S23.对得到的所述聚类簇进行判断,若目标聚类簇中元素的数量超过预设阈值,将目标聚类簇判定为所述抄袭群体,输出检测到的抄袭群体。

3.根据权利要求2所述的基于编码特征的SQL代码抄袭检测方法,其特征在于,所述步骤S22中采用凝聚式层次聚类算法进行聚类。

4.根据权利要求1所述的基于编码特征的SQL代码抄袭检测方法,其特征在于,所述步骤S3中,通过比较待检测SQL代码与对应的历史泛化编码特征之间的相似度值,判断待检测SQL代码是否属于抄袭或是被抄袭。

5.根据权利要求4所述的基于编码特征的SQL代码抄袭检测方法,其特征在于,所述步骤S3的具体步骤包括:

S31.遍历各个所述抄袭群体中所有待检测SQL代码,获取一个待检测SQL代码作为当前SQL代码,转入步骤S32;

S32.获取当前SQL代码以及当前SQL代码所对应的编写者的历史泛化编码特征,并计算获取的当前SQL代码与对应的所述历史泛化编码特征之间的相似度值;

S33.对计算得到的所述相似度值进行判断,若所述相似度值超过预设阈值,则判定当前SQL代码为抄袭;否则判定当前SQL代码为被抄袭,并使用所述泛化编码特征更新当前SQL代码对应编码者的历史泛化编码特征;

S34.取下一个待检测SQL代码作为当前SQL代码,返回步骤S32,直至遍历完所述抄袭群体中所有待检测SQL代码。

6.一种基于编码特征的SQL代码抄袭检测系统,其特征在于,包括:

编码特征提取模块,用于输入指定编码任务下所有的待检测SQL代码,分别提取出各待检测SQL代码中用于表征编写者在当前SQL编码任务下编码特性的特定编码特征,以及提取用于表征编写者在当前SQL编码任务下所展现出的泛化性编码特性的泛化编码特征,所述特定编码特征包括SQL关键字特征、SCHEMA特征、函数特征、关系运算符特征、括号特征、空格特征、缩进特征、换行特征中任意一种或两种以上的组合,所述SQL关键字特征为用于表征SQL标准中指定的关键字使用时所对应的编码特性的特征,所述SCHEMA特征为用于表征SCHEMA信息使用时所对应的编码特性的特征,所述函数特征为用于表征使用函数所对应的编码特性的特征,所述关系运算符特征为用于表征使用关系运算符所对应的编码特性的特征,所述括号特征为用于表征使用括号所对应的编码特性的特征,所述空格特征为用于表征使用空格所对应的编码特性的特征,所述缩进特征为用于表征缩进使用时所对应的编码特性的特征,所述换行特征为用于表征使用换行时所对应的编码特性的特征;

所述泛化编码特征包括泛化关键字特征、泛化括号特征、泛化换行特征、泛化空格特征、泛化缩进特征、字段名修饰特征中任意一种或两种以上的组合,所述泛化关键字特征用于记录编写者在各个SQL子句中针对主关键字的大小写书写特征,所述泛化括号特征用于只记录编写者在各类SQL子句中是否使用了括号,所述泛化换行特征用于只记录编写者在各类SQL子句中是否会对子句进行换行处理,所述泛化空格特征用于只记录编写者在各类SQL子句中是否存在连续使用多于两个空格的情况,所述泛化缩进特征用于只记录编写者在各类SQL子句中是否在子句中使用缩进符,所述字段名修饰特征用于记录编写者在完成单表查询任务的SELECT子句中是否使用了表名对字段进行修饰;

抄袭群体检测模块,用于将提取得到的所有特定编码特征进行聚类,根据聚类结果确定得到抄袭群体,将所述特定编码特征属于同一类的待检测SQL代码作为一个抄袭群体;

泛化特征匹配模块,用于分别获取所述抄袭群体中各待检测SQL代码进行判断,判断时将待检测SQL代码的泛化编码特征与待检测SQL代码所对应的编写者的历史泛化编码特征进行比较,所述历史泛化编码特征由对应编写者多个历史SQL代码数据提取得到的泛化编码特征计算得到,根据判断结果判定待检测SQL代码是否属于抄袭或被抄袭;

抄袭检测输出模块,用于将各所述抄袭群体中各待检测SQL代码的抄袭判定结果输出。

7.一种基于编码特征的SQL代码抄袭检测系统,包括处理器以及存储器,所述存储器用于存储计算机程序,所述处理器用于执行所述计算机程序,其特征在于,所述处理器用于执行所述计算机程序,以执行如权利要求1~5中任意一项所述方法。

8.一种存储有计算机程序的计算机可读存储介质,所述计算机程序执行时实现如权利要求1~5中任意一项所述的方法。