我有一个客户端在内部分发大型二进制文件.他们还传递文件的md5校验和,并在用作工作流程的一部分之前显然根据校验和验证文件.
然而,他们声称"经常"他们在文件中遇到腐败,其中md5仍然说该文件是好的.
我读过的所有内容都表明这应该是非常不可能的.
听起来有可能吗?另一种哈希算法会提供更好的结果吗?我是否应该查看流程问题,例如他们声称要检查校验和,但不是真的这样做?
NB,我还不知道在这种情况下"经常"意味着什么.他们每天处理数百个文件.我不知道这是每日,每月还是每年发生.
rec*_*ive 11
MD5是128位加密散列函数,因此不同的消息应该在128位空间上很好地分布.这意味着两个文件(不包括专门用于击败MD5的文件)应该有1到2 ^ 128的碰撞几率.换句话说,如果每隔纳秒比较一对文件,那么它就不会发生.
如果文件已损坏,则损坏的文件与未损坏的文件具有相同的md5校验和的概率为1:2 ^ 128.换句话说,它几乎就像"经常"一样永远发生.天文数据更可能是您的客户误报了实际发生的事情(比如他们正在计算错误的哈希值)