moss代码查重多少算安全
时间: 2023-12-20 18:23:20 浏览: 430
确定一个安全的查重阈值并不是一个简单的问题,因为它取决于多个因素,如代码长度、语言、代码结构等。一般来说,如果两份代码的相似度超过70%以上,就可以认为这两份代码是相似的。但是,这只是一个经验性的推荐值,具体情况还需要根据具体的应用场景和需求进行调整。对于一些要求比较高的场景,可能需要将相似度阈值调整得更高一些。
相关问题
Uploading .\Users\TC_MCZ\Desktop\22073015\main.cpp ...done. Uploading .\Users\TC_MCZ\Desktop\22073015\TaskC1.cpp ...done. Query submitted. Waiting for the server's response. Will try and open the above URL使用moss查重时出现的情况
这个情况可能是因为你正在使用 mOss(Measure Of Software Similarity,一种针对代码相似度的检测工具)来检测代码的相似度,但是服务器对你的请求还没有响应,因此你需要等待一段时间,直到服务器返回结果。你也可以尝试重新提交你的查询,并检查你的网络连接是否正常。如果问题依然存在,你可以联系 mOss 的技术支持部门以获取进一步的帮助。
java 修改的时候怎么查重,给我代码
对于Java代码的查重,可以使用以下方法:
方法一:使用专业的查重工具,如MOSS,JPlag等。
方法二:自己编写代码进行查重。
下面是一个简单的基于字符串比较的Java代码查重示例:
```
import java.io.*;
import java.util.*;
import java.security.*;
import java.math.*;
public class CodeCompare {
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
System.out.println("请输入要比较的两个代码文件路径:");
String filePath1 = br.readLine();
String filePath2 = br.readLine();
String code1 = readCode(filePath1);
String code2 = readCode(filePath2);
System.out.println("两个代码文件的相似度为:" + getSimilarity(code1, code2));
}
private static String readCode(String filePath) throws Exception {
BufferedReader br = new BufferedReader(new FileReader(filePath));
StringBuilder builder = new StringBuilder();
String line;
while ((line = br.readLine()) != null) {
builder.append(line);
}
br.close();
return builder.toString();
}
private static double getSimilarity(String s1, String s2) throws NoSuchAlgorithmException {
byte[] str1 = s1.getBytes();
byte[] str2 = s2.getBytes();
//使用MD5算法将字符串转化为数字签名
MessageDigest md = MessageDigest.getInstance("MD5");
str1 = md.digest(str1);
str2 = md.digest(str2);
//将byte数组转化为BigInteger,再转化为字符串,便于比较
BigInteger bi1 = new BigInteger(1, str1);
BigInteger bi2 = new BigInteger(1, str2);
String code1= bi1.toString(16);
String code2= bi2.toString(16);
//计算相似度(使用余弦相似度公式)
String[] codeArray1 = code1.split("");
String[] codeArray2 = code2.split("");
double numerator= 0.0;
double denominator1=0.0;
double denominator2=0.0;
for(int i=0; i<codeArray1.length; i++){
double x=Double.parseDouble(codeArray1[i]);
double y=Double.parseDouble(codeArray2[i]);
numerator+=x*y;
denominator1+=Math.pow(x, 2);
denominator2+=Math.pow(y, 2);
}
double denominator=Math.sqrt(denominator1)*Math.sqrt(denominator2);
return numerator/denominator;
}
}
```
在该示例中,通过读取文件内容并使用MD5算法将文本转化为数字签名,最后使用余弦相似度公式来计算代码相似度。
阅读全文