用户名散列中的MD5散列冲突
问题描述:
这个问题不需要任何代码,它只是关于MD5散列的概念性事情。用户名散列中的MD5散列冲突
我的应用程序管理用户社区。
我使用MD5哈希将任意长度的用户昵称缩减为哈希。 我预计的每个nick的MD5是不同的,因为这个MD5(nick)
将是我的每个用户的用户ID。
这是否始终如此?我敢肯定,我错过了一些东西,长期可能会发生碰撞(数百万用户===数百万不同长度的不同刻度)
答
随机数据(例如用户名)的MD5碰撞非常稀少你可能永远不会看到它们。问题在于MD5在碰撞抵抗方面已经被破坏,所以攻击者可以很容易地生成一对具有相同哈希的用户名,无论安全和/或功能如何影响您的设计。
在您的情况下生成简短标识符的常用方法是将每个用户名与在帐户数据库中按顺序生成的数字关联起来。应用程序在内部使用该号码,并且仅在需要向用户显示某些内容时才引用该用户名。
为什么你不使用nick作为userid? –
是的,可能会有碰撞。这不太可能。另外MD5坏了。 –
@JensSchauder一个子系统做这个映射文件存储在服务器中,我们只是想知道是否需要关注冲突,但对于服务器来说效率真的很方便,所有文件夹都只是十六进制数 – rupps