MD5 消息摘要算法是一种加密中断但仍然广泛使用的哈希函数,可生成 128 位哈希值。尽管MD5最初被设计为用作加密哈希函数,但已发现它存在广泛的漏洞。它仍然可以用作校验和来验证数据完整性,但只能防止意外损坏;当引入恶意时,可能会发生碰撞攻击。它仍然适用于其他非加密目的,例如用于确定分区数据库中特定密钥的分区,并且由于计算要求低于最新的安全哈希算法,因此可能是首选。
消息摘要算法 5 基于所谓的 Merkle-Damgård 构造作为算法。它用 1 和 0 将输出字符串填充到一定长度,并应用块压缩函数。运行几轮数学函数(如模加法),直到结果为 128 位值。
MD5不再被认为足够安全。自1994年以来,诸如目标计算碰撞之类的弱点就已经为人所知。即使使用普通PC,也可以在短时间内找到与哈希值匹配的字符串。因此,MD5 不应再用于任何加密应用程序。 消息摘要算法 5 的另一种攻击方法是所谓的彩虹表。它们包含字符串和关联的 MD5 哈希值。通过简单地将要破解的哈希值与存储在表中的哈希值进行比较,可以找到匹配的字符串。互联网上流传着非常大的彩虹表,可用于攻击。 在2017年初对SHA-1进行成功的碰撞攻击后,SHA-256或SHA-3今天仍被认为是MD5的安全替代品