zip文件的MD5哈希

普里亚

是否可以.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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章