我目前正在做的一个项目要求用户对整个项目运行 MD5 哈希检查工具,后已经解压了。他们目前不要求检查 ZIP 本身。
如果他们转而检查 zip 的 MD5,那么使用 MD5 来验证解压文件的完整性是否有任何价值 - 或者这是否由解压时的 CRC 检查所涵盖?
答案1
您的解压软件可能会出现异常,或者数据在存储步骤中被破坏。对于高度关键的数据,您应该在将其存储到磁盘后始终进行验证。
实际上,zip/unzip 是旧程序,Linux 附带的 Zip 程序中出现错误的风险相当低。这主要是在不稳定的平台上或存储出现问题时才需要担心。我曾见过路由器在解压图像时损坏图像,而 NFS 上的写入失败可能会导致有趣的文件损坏。
如果您认为有人可能会制作“邪恶”的 zip 存档来绕过您的检查,那么情况就有所不同了。请注意,zip 中的 CRC 无法防止攻击者,而 MD5 是一种相当古老且较弱的算法。大多数系统正在转向 SHA 算法来验证文件完整性(我认为 SHA256 最受欢迎)。对存档和扩展文件进行哈希处理使对 MD5 的攻击变得更加困难。
答案2
从技术上来说可以,但实际上可能不行。
答案3
应检查单个文件的校验和,以防止生日攻击碰撞……如果您有理由担心这些事情。
答案4
我认为唯一有效的方式是仔细检查安全性并保证文件在写入磁盘时没有损坏(那将是极其糟糕的运气或糟糕的磁盘!)。