0

这个问题不需要任何代码,它只是一个关于 MD5 散列的概念性问题。

我的应用管理用户社区。

我使用 MD5 散列将任意长度的用户昵称减少为散列。我希望每个昵称的 MD5 都不同,因为这 MD5(nick)将是我对每个用户的用户 ID。

这总是正确的吗?我确定我遗漏了一些东西,从长远来看可能会发生冲突(数百万用户 === 数百万不同长度的不同刻痕)

4

1 回答 1

0

随机数据(例如用户名)的 MD5 冲突非常罕见,您可能永远不会看到它们。问题是 MD5 在抗碰撞性方面已被破坏,因此攻击者可以轻松生成一对具有相同散列的用户名,无论对您的设计有什么安全和/或功能影响。

在您的情况下生成短标识符的常用方法是简单地将每个用户名与帐户数据库中按顺序生成的数字相关联。应用程序在内部使用该数字,并且仅在需要向用户显示某些内容时才引用用户名。

于 2013-12-22T09:49:59.363 回答