我正在寻找一种方式,特别是在PHP中,我将保证始终获得唯一的密钥。唯一密钥生成
我也做了以下内容:
strtolower(substr(crypt(time()), 0, 7));
但我发现,一旦在一段时间我结束了重复的密钥(很少,但往往不够)。
我也想过这样做的:
strtolower(substr(crypt(uniqid(rand(), true)), 0, 7));
但根据PHP的网站,uniqid()可以,如果uniqid()在同一个微秒的叫了两声,就可能产生相同的密钥。我正在考虑添加rand(),它很少会这样做,但仍然有可能。
在上面提到的行之后,我还删除了L和O等字符,这样对用户来说就不那么令人困惑了。这可能是重复原因的一部分,但仍然是必要的。
我想到的一个选择是创建一个网站,该网站将生成密钥,将其存储在数据库中,确保它完全独一无二。
还有其他想法吗?是否有任何网站已经做到了这一点,有一些API或只是返回密钥。我发现http://userident.com,但我不确定密钥是否完全独特。
这需要在没有任何用户输入的情况下在后台运行。
为什么密码需要完全独特? – 2008-09-10 20:24:52
我想crypt只是因为你需要crypt值,它与创建独特的价值无关,不是吗?! – 2010-03-18 19:22:51
另请参阅:[用于生成v4 UUID的PHP函数](http://stackoverflow.com/a/15875555/1338292)。 – 2014-11-25 03:12:37