在我正在处理的 Web 应用程序中,我需要生成长度过长的唯一 ID。比典型的 UUID 更长。另一个类似的网络应用程序使用如下所示的键:
cb745abbc635c03f0c259b65y5da57c06e12ef51
这些叫什么?以及如何在 PHP 中创建独特的?我试过 UID 方法,但是它们有点短。
最佳答案
您发布的示例是一个 40 个字符的十六进制字符串,因此看起来很像 SHA1 散列。 PHP 的内置 sha1()
function会将输入字符串散列为这样的散列。
如果您将 microtime(true)
(以微秒作为 float 获取当前时间)作为输入,您将获得一个唯一的时间值。将它与一个主机名连接起来,得到一个 40 个字符的全局唯一值。
echo sha1(microtime(true) . $hostname));
请注意,虽然这种类型的值作为数据库对象、用户 ID 等的唯一标识符可能令人满意,但不应将其视为加密安全,因为它的序列很容易被猜到。
关于PHP 这种 key 叫什么?类似于 UUID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26007197/