【发布时间】:2010-09-08 11:40:20
【问题描述】:
我正在寻找一种方法,特别是在 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,但我不确定这些键是否完全唯一。
这需要在后台运行,无需任何用户输入。
【问题讨论】:
-
为什么密码需要完全唯一?
-
我想crypt只是因为你需要crypt value,它与创造唯一价值无关,不是吗?!
标签: php web-services security passwords