這個問題不需要任何代碼,它只是關於MD5散列的概念性事情。用戶名散列中的MD5散列衝突
我的應用程序管理用戶社區。
我使用MD5哈希將任意長度的用戶暱稱縮減爲哈希。 我預計的每個nick的MD5是不同的,因爲這個MD5(nick)
將是我的每個用戶的用戶ID。
這是否始終如此?我敢肯定,我錯過了一些東西,長期可能會發生碰撞(數百萬用戶===數百萬不同長度的不同刻度)
這個問題不需要任何代碼,它只是關於MD5散列的概念性事情。用戶名散列中的MD5散列衝突
我的應用程序管理用戶社區。
我使用MD5哈希將任意長度的用戶暱稱縮減爲哈希。 我預計的每個nick的MD5是不同的,因爲這個MD5(nick)
將是我的每個用戶的用戶ID。
這是否始終如此?我敢肯定,我錯過了一些東西,長期可能會發生碰撞(數百萬用戶===數百萬不同長度的不同刻度)
隨機數據(例如用戶名)的MD5碰撞非常稀少你可能永遠不會看到它們。問題在於MD5在碰撞抵抗方面已經被破壞,所以攻擊者可以很容易地生成一對具有相同哈希的用戶名,無論安全和/或功能如何影響您的設計。
在您的情況下生成簡短標識符的常用方法是將每個用戶名與在帳戶數據庫中按順序生成的數字關聯起來。應用程序在內部使用該號碼,並且僅在需要向用戶顯示某些內容時才引用該用戶名。
爲什麼你不使用nick作爲userid? –
是的,可能會有碰撞。這不太可能。另外MD5壞了。 –
@JensSchauder一個子系統做這個映射文件存儲在服務器中,我們只是想知道是否需要關注衝突,但對於服務器來說效率真的很方便,所有文件夾都只是十六進制數 – rupps