我需要創建設置長度的唯一且隨機的字母數字標識。理想情況下,我會在我的數據庫中存儲一個從0開始的計數器,並且每當我需要一個唯一的ID時,我將得到計數器值(0),通過這個哈希函數運行它,給它一個設定的長度(可能爲4-6個字符) ID = Hash(Counter,4);],它會返回我的新ID(例如7HU9),然後增加我的計數器(0 ++ = 1)。指定長度唯一ID生成
我需要保持身份證的簡短,以便他們可以很容易地被記住或分享。安全性不是一個大問題,所以我不擔心試用隨機ID的人,但我不希望ID是可預測的,所以用戶不可能有機會注意到ID的增量3每次只允許他們通過ID後退,並逐一下載ID數據(例如A5F9,A5F6,A5F3,A5F0 == BAD)。
我不想只循環檢查唯一性的隨機字符串,因爲隨着密鑰的用完,這會隨着時間的推移增加數據庫負載。其目的是散列一個唯一的遞增計數器將保證ID唯一性達到某個計數器值,此時生成的ID的長度將增加1並且計數器復位,並且永久地繼續該模式。
是否有人知道任何適合這種需求的散列函數,或者有任何其他想法?
編輯:我不需要能夠反轉函數來獲取計數器值。