【技术实现步骤摘要】
一种基于区块链的高速可并行代码相似度对比方法和系统
[0001]本专利技术属于防算法抄袭、软件防伪技术,软件相似度分析
以及区块链
,具体特别涉及一种基于区块链的高速可并行代码相似度对比方法和系统。
技术介绍
[0002]计算机领域中有很多编程语言,最常见的C、C++、Java、Go、Python等,每种语言都会有很多从业人员使用,但不管使用哪种语言,源代码都是由字符串形成的,以文件形式存放。为了对比不同项目间的源代码相似度,衍生了很多代码相似度度算法,例如2019年张丹“代码相似性检测方法和工具综述”列举了许多方法,包括基于文本,词法、语义、语法、度量值、机器学习等方法。这些算法各有千秋,由于技术含量不同,实际使用上会有不同的效果,技术含量高的有时操作时反而困难很大。例如有的需要将数据存在数据内,数据库运行比较慢,分析几百个代码就需要1星期左右,耗费时间,而且容易出错,一个小的差异就会造成非常不一致的结果。
[0003]现有技术使用的较多的方式是行间对比方式,例如项目A有1万行代码,项目B有1万行代码, ...
【技术保护点】
【技术特征摘要】
1.一种基于区块链的高速可并行代码相似度对比方法,其特征在于包括:步骤1,将需要进行多个代码相似度对比的系统进行分类为多组,每组一个对比系统软件;步骤2,将所述需要进行代码相似度对比的系统内部的源代码文件再次分类,每一组一个源代码文件;步骤3,将所述源代码文件进行逐行又一次分类;步骤4,将所述每一行代码按照不同规则的切分,所述按照不同规则的切分包括按照标点、单词或空格进行切分;步骤5,提取各个code代码段的哈希值为特征;步骤6,以所述系统为单位,对比所述各个code代码段的特征,当所述特征相同的时候,则认为所述code代码段相同;步骤7,根据相同的所述code代码段的数量获得代码相似度的度量。2.根据权利要求1所述的一种基于区块链的高速可并行代码相似度对比方法,其特征在于:所述步骤4的所述不同规则包括按照空格切分、“,”号切分、“;”号切分以及单词切分。3.根据权利要求2所述的一种基于区块链的高速可并行代码相似度对比方法,其特征在于:所述步骤4还包括将切分后的代码进行统一大写转换。4.根据权利要求1所述的一种基于区块链的高速可并行代码相似度对比方法,其特征在于:所述步骤5使用哈希算法提取code
‑
c代码段的特征。5.根据权利要求4所述的一种基于区块链的高速可并行代码相似度对比方法,其特征在于:所述哈希算法包括MD4、MD5或SHA哈希算法,或是其他哈希算法。6.根据权利要求1所述的一种基于区块链的高速可并行代码相似度对比方法,其特征在于:所述步骤5采用并发提取特征的方式实施。7.根据权利要求6所述的一种基于区块链的高速可并行代码相似度对比方法,其特征在于:所述并发提取特征包括:步骤51,启动任务池task pool;步骤52,所述任务池ta...
【专利技术属性】
技术研发人员:蔡维德,
申请(专利权)人:天民青岛国际沙盒研究院有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。