我正在设计一个文件服务器应用程序,我想检查客户端计算机上的缓存文件是否是服务器上保留的最后一个版本。
我不太相信文件系统中的'更改日期'属性,所以我想比较文件中的实际字节。
我认为执行此操作的最快方法(因为在Web上发送所有字节需要一些时间),就是将文件长度和哈希字节发送到服务器。然后服务器首先检查文件长度,如果匹配,则计算服务器上文件的哈希值,然后检查它是否与客户端计算的相同。
有人能告诉我文件大小相同时哈希冲突的可能性是多少? (我目前正在使用MD5来提高速度。)
我可以假设文件大小相同且散列与内容相同吗?
谢谢!
答案 0 :(得分:1)
MD5中的随机碰撞是如此不可能,以至于忽略这种可能性几乎肯定是安全的。
然而,MD5已被证明在加密方面较弱,因此恶意攻击者可能会故意创建碰撞的文件。一个着名的例子是:
2008年12月30日,一组研究人员在第25届混沌通信大会上宣布他们如何使用MD5冲突创建一个中间证书颁发机构证书,该证书在通过其MD5哈希检查时似乎是合法的。
答案 1 :(得分:0)
我认为stackoverflow question与您的相似,并提供一些有用的见解。他们的结论是,检查文件日期类似于腰带的吊带。