将.txt文件中的每一行与Java中的数组字符串进行比较
我想将将.txt文件中的每一行与Java中的数组字符串进行比较,java,zip,checksum,Java,Zip,Checksum,我想将checksum1文件中的每一行与从file.zip获得的每个字符串值current\u crc进行比较 我怎么做呢?以及我是否有其他解决方案来检查从其他PC移动到另一台PC后zip文件中的文件 在从其他PC移动到另一台PC后,是否有其他解决方案检查zip文件中的文件 通常,我们使用哈希校验和来检查文件的完整性——它们效率更高,几乎同样可靠。例如: public static boolean checkChecksum(String filePath, String checksumPat
checksum1
文件中的每一行与从file.zip
获得的每个字符串值current\u crc
进行比较
我怎么做呢?以及我是否有其他解决方案来检查从其他PC移动到另一台PC后zip文件中的文件
在从其他PC移动到另一台PC后,是否有其他解决方案检查zip文件中的文件
通常,我们使用哈希校验和来检查文件的完整性——它们效率更高,几乎同样可靠。例如:
public static boolean checkChecksum(String filePath, String checksumPath) throws Exception{
File file = new File(filePath);
File checksum1 = new File(checksumPath);
try {
ZipFile zipFile = new ZipFile(file);
Enumeration e = zipFile.entries();
while(e.hasMoreElements()) {
ZipEntry entry = (ZipEntry)e.nextElement();
String entryName = entry.getName();
long crc = entry.getCrc();
String current_crc = crc+"";
}
zipFile.close();
return true;
}
catch (IOException ioe) {
log.debug("Zip file may be corrupted");
System.out.println("Error opening zip file" + ioe);
return false;
}
}
此代码从输入字节[](数据)生成一个小字节[]。要检查zip文件,只需从原始zip创建一个散列,并检查复制的zip的散列是否相同即可。您可以使用Arrays.equals()方法,也可以将字节数组转换为Base64字符串,以提高可读性
有趣的事实:两个256位哈希匹配的机会大致相当于在第一次尝试时正确猜测49个字符长的字母数字密码。我想问一个问题,zip文件是否没有损坏,但该zip文件中的某些文件在传输复制/粘贴时损坏,上传/下载?哈希不关心数据的布局。如果你有一个zip文件,你可以从中读取所有字节,不管里面有什么“文件”。如果您读取所有这些数据,它将包含所有文件的数据,因此只有在所有文件都未损坏的情况下,它的哈希才会正确。
MessageDigest digest = MessageDigest.getInstance("SHA-256");
byte[] hash = digest.digest(data);