获得唯一ID

时间:2018-06-10 16:38:41

标签: php

md5输出相同值的几率是多少。我想不出任何事情,但想得到其他意见。

function theid(){  
    $rand = random_int("1000000","9999999");
    $idcont = date("d.m.Y").$rand.time("h:i:s").$rand;
    $sysid = md5($idcont);  
    return $sysid; 
} 
$oneid = theid();

它没有哈希传递我用它来为我的系统生成唯一的ID。检查每个id不是一个好选择,因为id将存储在不同的地方。

结论。谢谢大家。 通过这篇文章中的评论我不得不坐下来重新思考如何携带id系统。我将减少使用auto_increment用于用户id,使用uniqid()来处理系统事件并使用hash_password()之类的东西来处理我甚至没有触及的其他部分。 最好拉上我的袖子......

3 个答案:

答案 0 :(得分:1)

我没有看到使用md5生成唯一ID的观点。显然,您并没有尝试创建加密安全值,无论如何它在您的示例中都不安全。 请改用uniqid()函数。它专为非碰撞而设计。它基于当前时间(以微秒为单位)创建唯一标识符。您可以使用第二个参数(更多熵)来创建更多唯一值。

$uid = uniqid('some prefix', true);

uniqid

答案 1 :(得分:0)

md5不再安全了。从理论上讲,它可以从不同的原点获得相同的哈希值,这并不容易,但它是可能的。 看来你想要生成独特的ID,所以也许是标准的uuid它是你的选择:https://docs.mongodb.com/manual/geospatial-queries/

答案 2 :(得分:0)

谢谢大家。通过这篇文章中的评论我不得不坐下来重新思考如何携带id系统。我将减少使用auto_increment用于用户id,使用uniqid()来处理系统事件并使用hash_password()之类的东西来处理我甚至没有触及的其他部分。最好拉上我的袖子......