题
我试图保证下载后文件的完整性。我将文件的 MD5 存储在数据库中,并在下载后将 MD5 与文件进行比较。但是,下载文件后对文件进行哈希处理时,我总是得到不同的 MD5 结果。我想知道正在散列的字节数组是否包含上次修改的元数据并且正在丢弃散列。如果其他人以前这样做过,我们将不胜感激您的帮助。
其他提示
一种简单的方法:针对两种不同的下载运行差异(我假设二进制但可能不是)。这应该很快找出问题所在。
如果我不是完全错误的话,md5哈希只处理实际数据而不是时间戳和其他元数据。也许您正在使用ftp传输文本文件,在这种情况下,ftpclient可能会重写换行符以适合您的系统,然后哈希将是不同的
如果您使用FTP下载,问题可能是:
二进制下载选项而不是 ASCII(反之亦然)。
跨平台传输,例如Windows to Unix对EOL的处理方式有所不同。
你可以通过对文件的某个特定部分进行散列来测试你的理论......比如,中间的50%......如果那是不同的话你知道它不仅仅是一个时间戳或者什么......那就是说,你真的需要给我们更多信息以获得更好的答案...
确保您实际上是在文件的字节上计算MD5,而不是文件名或其他字符串。
不隶属于 StackOverflow