我需要创建固定长度的唯一且随机的字母数字 ID。理想情况下,我会在我的数据库中存储一个计数器,从 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 并且计数器重置,并永远继续这种模式。
有没有人知道任何适合这种需要的散列函数,或者有任何其他想法?
编辑:我不需要能够反转函数来取回计数器值。