是否可以.zip
在Java中为文件生成MD5哈希?我发现的所有示例都是针对.txt
文件的。
我想知道何时解压缩数据,编辑文件,再次压缩并找到哈希,它是否会与原始文件不同?
您可以为任意文件创建MD5哈希,而与文件类型无关。散列仅占用任何字节流,根本不解释其含义。因此,您可以使用为.txt文件找到的示例,并将其应用于.zip文件。
是的,在.zip中编辑文件很可能会更改.zip文件的MD5-尽管由于哈希冲突而不能保证。但这只是哈希的一般属性,与压缩无关。
但是请注意,即使内容未更改,重新压缩文件也可能会更改MD5哈希值。这是因为即使解压缩后的文件与以前相同,但压缩后的文件仍会根据所使用的压缩算法及其参数而有所不同。
编辑(根据您的评论):
如果要避免那些在重新压缩时更改MD5哈希值的情况,则必须在解压缩的文件上运行MD5 。您只需使用流就可以即时进行操作,而无需实际将文件写入磁盘。ZipInputStream
帮助您。一个简单的代码示例:
InputStream theFile = new FileInputStream("example.zip");
ZipInputStream stream = new ZipInputStream(theFile);
try
{
ZipEntry entry;
while((entry = stream.getNextEntry()) != null)
{
MessageDigest md = MessageDigest.getInstance("MD5");
DigestInputStream dis = new DigestInputStream(stream, md);
byte[] buffer = new byte[1024];
int read = dis.read(buffer);
while (read > -1) {
read = dis.read(buffer);
}
System.out.println(entry.getName() + ": "
+ Arrays.toString(dis.getMessageDigest().digest()));
}
} finally { stream.close(); }
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句