CN101976318A - 一种基于数字指纹的代码相似度检测方法 - Google Patents
一种基于数字指纹的代码相似度检测方法 Download PDFInfo
- Publication number
- CN101976318A CN101976318A CN 201010543747 CN201010543747A CN101976318A CN 101976318 A CN101976318 A CN 101976318A CN 201010543747 CN201010543747 CN 201010543747 CN 201010543747 A CN201010543747 A CN 201010543747A CN 101976318 A CN101976318 A CN 101976318A
- Authority
- CN
- China
- Prior art keywords
- code
- sides
- sequence
- similarity
- 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
Links
Images
Landscapes
- Auxiliary Devices For Music (AREA)
Abstract
本发明涉及一种基于数字指纹的代码相似度检测方法,属于计算机应用技术领域。本发明的检测方法包括代码预处理、分词、格式化、采用数字指纹技术进行数值化、计算数字指纹序列和相似度计算六个步骤。本发明计算过程简单,代码相似度检测结果可信度高,能够选取出较有效的代码特征,降低了误判的概率,能够识别多种代码抄袭掩饰手段,采用数字指纹的方法,有效地提高了整体计算速度。
Description
技术领域
本发明涉及一种基于数字指纹的代码相似度检测方法,属于计算机应用技术领域。
背景技术
随着科技的进步,软件代码的编写逐渐普及,软件代码复制成本的降低导致大量软件侵权案件的发生,此时不仅一些应用软件的代码需要被保护,而且几乎所有高科技的产品中处理器的代码同样很容易被破解和仿制,这就需要在侵权案件处理过程中对双方代码的相似度进行检测,以作为侵权案件判决的重要依据。另外,随着自动化教育水平的不断提高,高校中的很多课程也涉及到了代码的编写,为了有效的检验学生对这些课的态度及收获,需要有一种能够检测代码相似度的工具来判断学生间是否存在代码抄袭。
对于软件代码相似度监测,国外已有一些投入使用的检测系统,如:斯坦福大学Alex Aiken开发的MOSS、德国卡尔斯鲁厄大学研制的JPlag和澳大利亚悉尼大学Wise研制的YAP系列,其中MOSS和JPlag系统对外提供免费的检测服务。
但是上述国外这些系统都是在20世纪90年代研制的,其均仅对代码结构进行简单的处理,检测结果可信度较低,同时由于代码中无效代码的干扰,不能完全识别代码中修改注释、重新排版、标识符重命名和数据类型替换等多种代码抄袭掩饰手段,容易增加误判的概率。国内对这方面起步较晚,仅有部分研究机构在代码相似度检测方面进行了初步的研究,研究重点聚集在代码特征选取这方面,但目前的产品大部分算法冗余,计算速度慢,同时由于代码特征少而且不明显,从而导致选取出来的特征不能显著代表源代码本身,所以其检测结果往往不能令人满意。
发明内容
本发明的目的是为了解决在代码相似度检测过程中,对比双方源代码特征不明显从而导致特征选取效果不佳的问题,提出一种基于数字指纹的代码相似度检测方法,该方法能够识别较多代码抄袭掩饰手段、有效选取代码特征及指纹、提高相似度检测准确性。
本发明是通过以下技术方案实现的。
本发明的一种基于数字指纹的代码相似度检测方法,包括代码预处理、分词、格式化、采用数字指纹技术进行数值化、计算数字指纹序列和相似度计算六个步骤,其具体检测过程为:
1、将对比双方源代码分别进行预处理,包括对双方源代码进行以下操作:删除注释、删除宏命令、删除与代码语义无关的内容,得到预处理后的双方代码,其目的是减少代码表面无关信息对相似判定的影响;
2、将经步骤1预处理后的双方代码分别进行分词,包括将代码中所含相邻的不同类型的词之间加上间隔符空格;
3、将经步骤2处理过后的双方代码分别进行格式化,包括将关键词中的表征数据类型的词和标识符分别用一个自定义的词进行替换,并删除相邻词与词之间的空格,形成格式化代码串;
4、将经步骤3处理后的双方格式化代码串分别利用数字指纹技术转化成一系列的数值,形成数值序列,具体包括以下两个步骤:
4.1将格式化代码串重叠切分为固定长度的特征片段;
4.2使用Karp-Rabin方法将所有特征片段转化为其对应的数值序列;
5、利用步骤4中获得的双方数值序列分别计算双方的数字指纹序列,具体包括以下四个步骤:
5.1从已训练好的无效代码库中提取无效数值;
5.2将步骤4获得的双方的数值序列中去除掉步骤5.1所提取的无效数值,余下的即为双方的有效数值序列;
5.3将步骤5.2所获得的双方有效数值序列分别进行重叠切分形成多个数值片段;
5.4采用最小Hash法从由步骤5.3得到的进行重叠切分后的双方有效数值序列中选取出双方的数字指纹序列,即从多个数值片段中选择最小的Hash值组成数字指纹序列,其中同一位置的数值只能被选择一次;
6、根据步骤5中得出的双方的数字指纹序列来计算双方源代码的相似度值,并用其表征双方代码间的相似程度;
上述步骤2中所述不同类型包括与双方源代码编写方式对应的关键词、标识符、操作符和库函数;
上述步骤4和步骤5中所述的重叠切分是指将代码串或者数值序列按照字符顺序依次切分成固定长度的数值片段,其中相邻的两个片段只有前一个片段的第一个字符与后一个片段的最后一个字符不同,其余内容完全相同;
上述步骤5.1中无效数值的提取方法和原理为:与自然语言不同,所有编写代码的语言都有十分严格的编写规则,只有符合编写规则的代码才能使用相应的编译器进行编译运行,如:语句之间用分号隔开;代码块要用大括弧分隔;if语句的条件要用括弧括起来;声明变量时,数据类型在前,变量在后等等。正是由于上述的这一系列代码编写规则,所以在任何代码之间都会产生较多相同的代码片段。如果指纹化阶段选取了这些代码片段对应的数值作为指纹,即使两个代码本身并没有抄袭,仍可能产生较高的相似度值,从而导致误判抄袭的情况发生。将由代码编写规则产生的相同代码片段定义为“无效片段”,如C语言中,几乎每个代码都会出现“main()”、“ain(){”、“;}”等。而由“无效片段”构成的集合称作“无效片段集合”,使用Karp-Rabin方法将“无效片段”转化为其对应的数值序列即“无效数值”,由这些无效数值构成的集合则称为“无效数值集合”,又称为“无效数值代码库”。
上述步骤6中所述的计算双方指纹间的相似度值的方法为采用公式
进行计算;式中A、B代表双方用于对比的源代码,F(A)和F(B)分别表示代码A和B的数字指纹序列的长度,LCS(F(A),F(B))表示指纹序列F(A)和F(B)之间的最长公共子序列的长度,Similarity(A,B)即表示双方代码的相似度。其原理是:代码A、B中选取出来的指纹序列F(A)、F(B)中,每个数字指纹都不是有且仅出现一次,所以用指纹序列来描述F(A)和F(B)更为准确,而不是指纹集合,所以这里使用最长公共子序列来表征双方代码之间的相同部分。因此,用代码双方A、B的指纹序列F(A)、F(B)的最长公共子序列中总个数的两倍除以两个指纹序列F(A)和F(B)的总个数来表征代码A和B之间的相似程度,即代码A和B之间的相似度。
对于单个源代码与一个代码集合中所有单个源代码之间的基于数字指纹的代码相似度检测方法为:按照上述中单个源代码和单个源代码之间相似度检测方法所述步骤1至步骤6的方法,分别确定该单个源代码与该代码集合中每个单个源代码间的相似度值。具体调查代码之间是否存在抄袭现象的过程为将这些相似度值从大到小排列,重点调查相似度最大的几对代码。
对于一个代码集合中所有单个源代码和另一个代码集合所有单个源代码之间的基于数字指纹的代码相似度检测方法为:按照上述中单个源代码和单个源代码之间相似度检测方法所述步骤1至步骤6的方法,分别获得第一个集合中的每个代码与另一集合中所有代码的相似度值,这样就能获得两个代码集合中任意两个代码之间的相似度值。具体调查代码之间是否存在抄袭现象的过程为将这些相似度值从大到小排列,重点调查相似度最大的几对代码。
分别确定这个集合中每个代码与其他所有代码之前的相似度值。根据这些数值,就可以了解一个集合整体内部中所有代码的相似程度;将其从大到小排列,即可重点调查相似度最大的几对代码之间是否存在抄袭现象。
对于代码集合内部所有单个源代码之间的基于数字指纹的代码相似度检测方法为:按照上述中单个源代码和单个源代码之间相似度检测方法所述步骤1至步骤6的方法,分别获得这个集合中每个代码与其他所有代码之前的相似度值。具体调查代码之间是否存在抄袭现象的过程为将这些相似度值从大到小排列,重点调查相似度最大的几对代码。
有益效果
本发明的一种基于数字指纹的代码相似度检测方法,其计算过程简单,代码相似度检测结果可信度高;本发明是在去除代码的无效片段的基础上选取代码特征,所以能够选取出较有效的代码特征,降低了误判的概率;本发明能够识别代码中修改注释、重新排版、标识符重命名和数据类型替换等多种代码抄袭掩饰手段;同时按照本发明所使用的数字指纹方法以及指纹选取策略,能够有效的提高整体的计算速度。
附图说明
图1为本发明的检测过程流程图;
图2为用于检测代码相似度的两个C语言源代码;
图3为对待检双方源代码进行预处理过后的结果;
图4为对预处理后的双方代码进行分词处理后的结果;
图5为对分词后的双方代码进行格式化处理后的结果;
图6为对格式化后的双方代码进行重叠切分处理后的结果;
图7为对重叠切分后的双方代码进行数值化处理后的结果;
图8为已训练好的针对C语言中的无效数值集合;
图9为计算得出的双方数字指纹序列。
具体实施方式
下面结合附图和实施例对本发明做进一步说明。
实施例
一种基于数字指纹的代码相似度检测方法,如图1所示,对如图2所示两段采用C语言编写的源代码进行相似度检测,其步骤如下:
1、对双方源代码进行预处理,其目的是减少代码表面无关信息对相似判定的影响。具体包括对双方源代码进行以下操作:删除注释、删除宏命令、删除与代码语义无关的内容,得出的结果如图3所示;
2、对步骤1处理过后的双方代码进行分词。具体包括将代码中所含的不同类型的词之间加上间隔符空格,若原有间隔符空格则予以保留。在代码的编写和修改过程中,不同类型的词之间可能没有分隔符,为了识别标识符、数据类型替换等抄袭手段,将关键词、标识符、库函数、操作符及单独的数字分别用空格间隔符分开,为格式化代码做准备,分词过后双方代码如图4所示;
3、将步骤2分词过后的双方代码进行格式化。具体包括将标识符和关键词中的表征数据类型的词分别用一个自定义的词进行替换,其中标识符对应的统一模式定义为“UDEF”,数据类型的统一模式为“DTYPE”,并删除双方代码中词与词之间的空格,形成格式化代码串。同时将标准输出printf的内容统一化为“printf()”,格式化过后双方代码如图5所示;
4、将经步骤3后形成的双方格式化代码串利用数字指纹技术转化成一系列的数值,形成数值序列。具体包括两个步骤:
4.1将代码串重叠切分成长度为8的特征片段。对起始位置为i、长度为n的代码串“AiAi+1Ai+2...Ai+n-1”进行重叠切分,其中n>=8,Aj为(i<=j<=i+n-1)代码串中的数值,可得到如下(n-7)个长度为8的特征片段:“AiAi+1Ai+2......Ai+7”、“Ai+1Ai+2Ai+3......Ai+8”、“Ai+2Ai+3Ai+4......Ai+9”、......、“Ai+n-9Ai+n-8Ai+n-7...Ai+n-2”、“Ai+n-8Ai+n-7Ai+n-6...Ai+n-1”。如图6所示为对两段代码进行重叠切分后前面的一部分特征片段;
4.2使用Karp-Rabin方法将步骤4.1中得到的所有特征片段转化为其对应的数值序列,即如果特征片段中含有大写字母,则将其转化为小写字母,然后用转化过后片段中所有字符的ASCII值计算特征片段对应的数值。取其中长度为m、起始位置为i的代码片段“CiCi+1Ci+2...Ci+m-1”,则该片段对应的数值为:
H(CiCi+1Ci+2...Ci+m-1)=(Ci*2m-1+Ci+1*2m-2+……+Ci+m-1)mod M
其中Cj(i<=j<=i+m-1)为片段中的字符,M取值为212。这种方法使得相同的代码片段产生相同的数值。根据上式我们可以得到相邻片段数值之间的计算关系:
H(Ci+1Ci+2...Ci+m)=(2*H(CiCi+1Ci+2...Ci+m-1)+Ci+m-Ci*2m)mod M其中Ci+1Ci+2...Ci+m是CiCi+1Ci+2...Ci+m-1后续特征片段,特征片段Ci+1Ci+2...Ci+m对应的数值H(Ci+1Ci+2...Ci+m)可以在其前一个特征片段CiCi+1Ci+2...Ci+m-1对应的数值H(CiCi+1Ci+2...Ci+m-1)的基础上进行简单的线性计算(两倍的H(CiCi+1Ci+2...Ci+m-1),加上该特征片段的最后一个的字符Ci+m的ASCII值,减去前一特征片段的第一个字符与常量2m的乘积即可获得。利用这种特殊的关系可以以o(n)的速度获得所有片段的数值,n为代码片段的个数。
使用Karp-Rabin方法计算由步骤4.1中产生的双方代码中所有特征片段的数值序列结果如图7所示。
5、利用步骤4中获得的双方数值序列计算双方的数字指纹序列,具体包括以下几步:
5.1从已训练好的无效数值代码库中提取无效数值,所有的无效数值如图8所示;
5.2将步骤4中获得的双方数值序列中去除掉如图8中所示的这些无效数值,余下的即为有效数值序列;
5.3对由步骤5.2产生的有效的数值序列进行重叠切分,具体方法同步骤4.1;
5.4采用最小Hash法从由步骤5.3得到的进行重叠切分后的有效数值序列中选取出双方的数字指纹序列。即在每个切分过后的数值片段中选择最小的Hash值组成指纹序列,其中每个位置的数值只能被选择一次,最终选取出来的双方代码的指纹序列如图9所示;
6、根据步骤5中得出的双方的数字指纹序列来计算双方的相似度值,并用其表征双方代码间的相似程度。使用上述改进的指纹选取方法获得所有测试代码的指纹之后,考虑到步骤5.4得到的指纹可能不唯一,故使用如下的相似度计算公式
来获得双方源代码之间的相似度;式中A、B代表双方用于对比的源代码,F(A)和F(B)分别表示代码A和B的数字指纹序列的长度,LCS(F(A),F(B))表示指纹序列F(A)和F(B)之间的最长公共子序列的长度,Similarity(A,B)即表示双方代码的相似度。最终得出图2中所示的两个代码之间的相似度是78%,这个数值能够表征双方代码之间的相似度程度。
上述步骤2和步骤3中所述的关键词为C语言所规定的32个关键词;
上述步骤2和步骤3中所述的标识符包含由字母A-Z、a-z、数字0-9和下划线组成的字符串,其中第一个字符必须是字母或下划线;
上述步骤2中所述的库函数包括C语言中的数学函数、输入输出函数、字符函数与字符串函数、动态分配存储空间函数;
上述步骤2中所述的操作符包括“#”、“+”、“-”、“*”、“/”、“%”、“=”、“<”、“>”、“&”、“|”“^”、“~”、“(”、“)”、“[”、“]”、“.”、“!”、“?”、“:”、“,”、“;”。
以上所述的具体描述,对发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施例而已,并不用于限定本发明的保护范围,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (5)
1.一种基于数字指纹的代码相似度检测方法,其特征在于检测过程为:
1)将对比双方源代码分别进行预处理,即对双方源代码进行以下操作:删除注释、删除宏命令、删除与代码语义无关的内容;
2)将经步骤1)预处理后的双方代码分别进行分词,即将代码中相邻的不同类型的词之间加上空格;
3)将经步骤2)分词过后的双方代码分别进行格式化,即将代码中所含关键词中表征数据类型的词和标识符分别用一个自定义的词进行替换,并删除相邻词与词之间的空格,形成格式化代码串;
4)将经步骤3)处理后的双方的格式化代码串分别利用数字指纹技术转化成一系列的数值,形成数值序列,包括以下两个步骤:
4.1将格式化代码串重叠切分为固定长度的特征片段;
4.2使用Karp-Rabin方法将所有特征片段转化为其对应的数值序列;
5)利用步骤4)中获得的双方数值序列分别计算双方的数字指纹序列,包括以下四个步骤:
5.1从已训练好的无效代码库中提取无效数值;
5.2将步骤4)获得的双方的数值序列中去除掉由步骤5.1中所提取的无效数值,余下的即为双方的有效数值序列;
5.3将步骤5.2所获得的双方有效数值序列分别进行重叠切分,形成多个数值片段;
5.4采用最小Hash法从由步骤5.3中获得的双方的多个数值片段中选取计算双方的数字指纹序列,即从多个数值片段中选择最小的Hash值组成数字指纹序列;
6)根据步骤5)中得出的双方的数字指纹序列来计算双方源代码的相似度值,并用其表征双方代码间的相似程度;
上述步骤2中所述不同类型包括与双方源代码编写方式对应的关键词、标识符、操作符和库函数;
上述步骤4和步骤5中所述的重叠切分方法为将代码串或者数值序列按照字符顺序依次切分成固定长度的数值片段,其中相邻的两个片段只有前一个片段的第一个字符与后一个片段的最后一个字符不同,其余内容完全相同;
上述步骤6中所述的计算双方指纹间的相似度值的方法为采用公式
进行计算;其中A、B代表双方用于对比的源代码,F(A)和F(B)分别表示代码A和B的数字指纹序列的长度,LCS(F(A),F(B))表示指纹序列F(A)和F(B)之间的最长公共子序列的长度,Similarity(A,B)即表示双方代码的相似度。
2.根据权利要求1所述的一种基于数字指纹的代码相似度检测方法,其特征在于:对比双方源代码均采用C语言编写,所述的关键词为C语言标准所规定的32个关键词。
3.根据权利要求1所述的一种基于数字指纹的代码相似度检测方法,其特征在于:对比双方源代码均采用C语言编写,步骤2)和步骤3)中所述的标识符为由字母A-Z、a-z、数字0-9和下划线组成的且第一个字符是字母或下划线的字符串。
4.根据权利要求1所述的一种基于数字指纹的代码相似度检测方法,其特征在于:对比双方源代码均采用C语言编写,所述的库函数包括C语言中的数学函数、输入输出函数、字符函数与字符串函数、动态分配存储空间函数。
5.根据权利要求1所述的一种基于数字指纹的代码相似度检测方法,其特征在于:对比双方源代码均采用C语言编写,所述的操作符包括“#”、“+”、“-”、“*”、“/”、“%”、“=”、“<”、“>”、“&”、“|”“^”、“~”、“(”、“)”、“[”、“]”、“.”、“!”、“?”、“:”、“,”、“;”。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 201010543747 CN101976318A (zh) | 2010-11-15 | 2010-11-15 | 一种基于数字指纹的代码相似度检测方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 201010543747 CN101976318A (zh) | 2010-11-15 | 2010-11-15 | 一种基于数字指纹的代码相似度检测方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN101976318A true CN101976318A (zh) | 2011-02-16 |
Family
ID=43576202
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN 201010543747 Pending CN101976318A (zh) | 2010-11-15 | 2010-11-15 | 一种基于数字指纹的代码相似度检测方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101976318A (zh) |
Cited By (23)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102982292A (zh) * | 2012-11-05 | 2013-03-20 | 北京奇虎科技有限公司 | 获取可信文件数字签名的方法和装置及系统 |
CN103279377A (zh) * | 2013-05-09 | 2013-09-04 | 北京百度网讯科技有限公司 | 代码差异度比较方法及装置 |
CN103324888A (zh) * | 2012-03-19 | 2013-09-25 | 哈尔滨安天科技股份有限公司 | 基于家族样本的病毒特征自动提取方法及系统 |
CN103324886A (zh) * | 2013-06-05 | 2013-09-25 | 中国科学院计算技术研究所 | 一种网络攻击检测中指纹库的提取方法和系统 |
CN104123493A (zh) * | 2014-07-31 | 2014-10-29 | 百度在线网络技术(北京)有限公司 | 应用程序的安全性检测方法和装置 |
CN104598231A (zh) * | 2015-01-09 | 2015-05-06 | 山东工商学院 | Python源代码文件相似性检测方法 |
US9395961B1 (en) | 2015-12-07 | 2016-07-19 | International Business Machines Corporation | Fingerprint-based code version selection |
CN106104564A (zh) * | 2014-03-17 | 2016-11-09 | 爱克发印艺公司 | 用于数字指纹代码的解码器和编码器 |
WO2017067364A1 (zh) * | 2015-10-21 | 2017-04-27 | 北京瀚思安信科技有限公司 | 确定文本串公共子序列的方法和设备 |
CN107169321A (zh) * | 2017-06-10 | 2017-09-15 | 西安交通工程学院 | 基于属性计数和结构度量技术相结合的程序剽窃检测方法及系统 |
CN108073815A (zh) * | 2017-12-29 | 2018-05-25 | 哈尔滨安天科技股份有限公司 | 基于代码切片的家族判定方法、系统及存储介质 |
CN108108596A (zh) * | 2017-12-13 | 2018-06-01 | 上海掌门科技有限公司 | 一种用于生成文字作品的数字指纹的方法与设备 |
CN108710564A (zh) * | 2017-09-15 | 2018-10-26 | 苏州棱镜七彩信息科技有限公司 | 基于大数据的源代码综合评测平台 |
CN109918621A (zh) * | 2019-02-18 | 2019-06-21 | 东南大学 | 基于数字指纹和语义特征的新闻文本侵权检测方法与装置 |
CN109976991A (zh) * | 2017-12-27 | 2019-07-05 | 北京奇虎科技有限公司 | 一种程序代码的处理方法和装置 |
CN110297639A (zh) * | 2019-07-01 | 2019-10-01 | 北京百度网讯科技有限公司 | 用于检测代码的方法和装置 |
CN110941726A (zh) * | 2018-09-25 | 2020-03-31 | 福斯德公司 | 将源代码转换成数字标识符并与数据集进行比较的方法 |
CN111200600A (zh) * | 2019-12-28 | 2020-05-26 | 西安交通大学 | 一种物联网设备流量序列指纹特征提取方法 |
CN111368296A (zh) * | 2019-06-27 | 2020-07-03 | 北京关键科技股份有限公司 | 源码文件匹配率分析方法 |
CN111459788A (zh) * | 2019-01-18 | 2020-07-28 | 南京大学 | 一种基于支持向量机的测试程序抄袭检测方法 |
WO2021121338A1 (en) * | 2019-12-17 | 2021-06-24 | Beijing Didi Infinity Technology And Development Co., Ltd. | Fingerprints for open source code governance |
US11163948B2 (en) | 2018-07-10 | 2021-11-02 | Beijing Didi Infinity Technology And Development Co., Ltd. | File fingerprint generation |
CN114880023A (zh) * | 2022-07-11 | 2022-08-09 | 山东大学 | 面向技术特征的源代码对比方法、系统与程序产品 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101276411A (zh) * | 2008-05-12 | 2008-10-01 | 北京理工大学 | 指纹识别方法 |
CN101398758A (zh) * | 2008-10-30 | 2009-04-01 | 北京航空航天大学 | 一种代码抄袭的检测方法 |
-
2010
- 2010-11-15 CN CN 201010543747 patent/CN101976318A/zh active Pending
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101276411A (zh) * | 2008-05-12 | 2008-10-01 | 北京理工大学 | 指纹识别方法 |
CN101398758A (zh) * | 2008-10-30 | 2009-04-01 | 北京航空航天大学 | 一种代码抄袭的检测方法 |
Non-Patent Citations (1)
Title |
---|
《计算机工程与应用》 20100921 黄柳柳等 "面向代码相似度检测的指纹选取方法" , 2 * |
Cited By (37)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103324888A (zh) * | 2012-03-19 | 2013-09-25 | 哈尔滨安天科技股份有限公司 | 基于家族样本的病毒特征自动提取方法及系统 |
CN103324888B (zh) * | 2012-03-19 | 2016-04-27 | 哈尔滨安天科技股份有限公司 | 基于家族样本的病毒特征自动提取方法及系统 |
CN102982292A (zh) * | 2012-11-05 | 2013-03-20 | 北京奇虎科技有限公司 | 获取可信文件数字签名的方法和装置及系统 |
CN102982292B (zh) * | 2012-11-05 | 2015-11-25 | 北京奇虎科技有限公司 | 获取可信文件数字签名的方法和装置及系统 |
CN103279377A (zh) * | 2013-05-09 | 2013-09-04 | 北京百度网讯科技有限公司 | 代码差异度比较方法及装置 |
CN103324886A (zh) * | 2013-06-05 | 2013-09-25 | 中国科学院计算技术研究所 | 一种网络攻击检测中指纹库的提取方法和系统 |
CN103324886B (zh) * | 2013-06-05 | 2016-04-27 | 中国科学院计算技术研究所 | 一种网络攻击检测中指纹库的提取方法和系统 |
CN106104564A (zh) * | 2014-03-17 | 2016-11-09 | 爱克发印艺公司 | 用于数字指纹代码的解码器和编码器 |
CN106104564B (zh) * | 2014-03-17 | 2018-11-06 | 爱克发有限公司 | 用于数字指纹代码的解码器和编码器 |
CN104123493A (zh) * | 2014-07-31 | 2014-10-29 | 百度在线网络技术(北京)有限公司 | 应用程序的安全性检测方法和装置 |
CN104123493B (zh) * | 2014-07-31 | 2017-09-26 | 百度在线网络技术(北京)有限公司 | 应用程序的安全性检测方法和装置 |
CN104598231A (zh) * | 2015-01-09 | 2015-05-06 | 山东工商学院 | Python源代码文件相似性检测方法 |
CN104598231B (zh) * | 2015-01-09 | 2018-07-20 | 山东工商学院 | Python源代码文件相似性检测方法 |
WO2017067364A1 (zh) * | 2015-10-21 | 2017-04-27 | 北京瀚思安信科技有限公司 | 确定文本串公共子序列的方法和设备 |
CN106610965A (zh) * | 2015-10-21 | 2017-05-03 | 北京瀚思安信科技有限公司 | 确定文本串公共子序列的方法和设备 |
US10769192B2 (en) | 2015-10-21 | 2020-09-08 | Beijing Hansight Tech Co., Ltd. | Method and equipment for determining common subsequence of text strings |
US9395961B1 (en) | 2015-12-07 | 2016-07-19 | International Business Machines Corporation | Fingerprint-based code version selection |
CN107169321B (zh) * | 2017-06-10 | 2020-07-28 | 西安交通工程学院 | 基于属性计数和结构度量技术相结合的程序剽窃检测方法及系统 |
CN107169321A (zh) * | 2017-06-10 | 2017-09-15 | 西安交通工程学院 | 基于属性计数和结构度量技术相结合的程序剽窃检测方法及系统 |
CN108710564A (zh) * | 2017-09-15 | 2018-10-26 | 苏州棱镜七彩信息科技有限公司 | 基于大数据的源代码综合评测平台 |
CN108108596A (zh) * | 2017-12-13 | 2018-06-01 | 上海掌门科技有限公司 | 一种用于生成文字作品的数字指纹的方法与设备 |
CN108108596B (zh) * | 2017-12-13 | 2020-12-01 | 上海掌门科技有限公司 | 一种用于生成文字作品的数字指纹的方法与设备 |
CN109976991A (zh) * | 2017-12-27 | 2019-07-05 | 北京奇虎科技有限公司 | 一种程序代码的处理方法和装置 |
CN108073815A (zh) * | 2017-12-29 | 2018-05-25 | 哈尔滨安天科技股份有限公司 | 基于代码切片的家族判定方法、系统及存储介质 |
CN108073815B (zh) * | 2017-12-29 | 2022-02-15 | 安天科技集团股份有限公司 | 基于代码切片的家族判定方法、系统及存储介质 |
US11163948B2 (en) | 2018-07-10 | 2021-11-02 | Beijing Didi Infinity Technology And Development Co., Ltd. | File fingerprint generation |
CN110941726A (zh) * | 2018-09-25 | 2020-03-31 | 福斯德公司 | 将源代码转换成数字标识符并与数据集进行比较的方法 |
CN111459788A (zh) * | 2019-01-18 | 2020-07-28 | 南京大学 | 一种基于支持向量机的测试程序抄袭检测方法 |
CN109918621B (zh) * | 2019-02-18 | 2023-02-28 | 东南大学 | 基于数字指纹和语义特征的新闻文本侵权检测方法与装置 |
CN109918621A (zh) * | 2019-02-18 | 2019-06-21 | 东南大学 | 基于数字指纹和语义特征的新闻文本侵权检测方法与装置 |
CN111368296A (zh) * | 2019-06-27 | 2020-07-03 | 北京关键科技股份有限公司 | 源码文件匹配率分析方法 |
CN110297639A (zh) * | 2019-07-01 | 2019-10-01 | 北京百度网讯科技有限公司 | 用于检测代码的方法和装置 |
CN110297639B (zh) * | 2019-07-01 | 2023-03-21 | 北京百度网讯科技有限公司 | 用于检测代码的方法和装置 |
WO2021121338A1 (en) * | 2019-12-17 | 2021-06-24 | Beijing Didi Infinity Technology And Development Co., Ltd. | Fingerprints for open source code governance |
CN111200600B (zh) * | 2019-12-28 | 2021-03-16 | 西安交通大学 | 一种物联网设备流量序列指纹特征提取方法 |
CN111200600A (zh) * | 2019-12-28 | 2020-05-26 | 西安交通大学 | 一种物联网设备流量序列指纹特征提取方法 |
CN114880023A (zh) * | 2022-07-11 | 2022-08-09 | 山东大学 | 面向技术特征的源代码对比方法、系统与程序产品 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101976318A (zh) | 一种基于数字指纹的代码相似度检测方法 | |
US11216504B2 (en) | Document recommendation method and device based on semantic tag | |
JP5424001B2 (ja) | 学習データ生成装置、固有表現抽出システム、学習データ生成方法、及びプログラム | |
US20240028837A1 (en) | Device and method for machine reading comprehension question and answer | |
US8458198B1 (en) | Document analysis and multi-word term detector | |
EP1367501A2 (en) | Lexicon with sectionalized data and method of using the same | |
US20130110839A1 (en) | Constructing an analysis of a document | |
CN101361066A (zh) | 用于量化文本表达相似性的自动的、基于计算机的相似性计算系统 | |
CN103309852A (zh) | 一种基于统计和规则的特定领域的合成词发现方法 | |
CN103544204B (zh) | 用于表示为树的分级的并基于索引的水印的系统和方法 | |
JP2009543255A (ja) | パラレル・データを特定するために階層的かつ順次的なドキュメント・ツリーを対応付けること | |
CA2710421A1 (en) | Entity, event, and relationship extraction | |
CN111124487B (zh) | 代码克隆检测方法、装置以及电子设备 | |
CN115630640B (zh) | 一种智能写作方法、装置、设备及介质 | |
CN102253930A (zh) | 一种文本翻译的方法及装置 | |
JP2005174336A (ja) | 情報抽出のための一般化文字列パターンの学習および使用 | |
CN110532352B (zh) | 文本查重方法及装置、计算机可读存储介质、电子设备 | |
CN104516727A (zh) | 更改资源文件中的资源的方法和系统 | |
CN104008123A (zh) | 用于中文姓名匹配的方法和系统 | |
CN107169011B (zh) | 基于人工智能的网页原创性识别方法、装置及存储介质 | |
CN111190873B (zh) | 一种用于云原生系统日志训练的日志模式提取方法及系统 | |
CN111984845A (zh) | 网站错别字识别方法和系统 | |
CN103729343A (zh) | 基于百科链接共现的语义消岐方法 | |
Abd et al. | Arabic light stemmer based on ISRI stemmer | |
CN110705285A (zh) | 一种政务文本主题词库构建方法、装置、服务器及可读存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C02 | Deemed withdrawal of patent application after publication (patent law 2001) | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20110216 |