md5 - 如果输入字符串仅包含字母数字,md5 消化的冲突概率是多少
问题描述
输入字符串具有以下条件:
- 仅包含字母数字 ([a-zA-Z0-9])
- 字符串的大小始终小于 256 字节
- 输入字符串的总数小于 1000,000
那么如果输入的字符串都在上述条件下,md5消化的冲突概率是多少呢?我可以假设没有冲突吗?
解决方案
如果输入是随机的,则该输入集中发生冲突的可能性非常低。话虽如此,MD5 是一种损坏的算法,人类可以轻松地使用软件来查找碰撞。所以你可能不应该使用 MD5,但这取决于你使用它的目的。我不确定你为什么会再想使用 MD5。您应该查看 blake2 系列或更新的 SHA(SHA256、SHA512,而不是 SHA-1)。如果这些是密码,您几乎绝对应该使用为密码设计的哈希,例如 PBKDF2 或 Argons 之一。老实说,我建议在大多数情况下只使用 libsodium 的默认值。