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();它不散列传递,我使用它为我的系统生成唯一的ids。检查每个id不是一个好的选择,因为id将存储在不同的地方。
结论。谢谢大家。通过在这篇文章中的评论,我不得不坐视不理,重新思考我是如何实现真正的系统的。我将减少对用户id使用auto_increment,使用uniqid()来处理系统事件,并将类似于hash_password()的内容用于我在这里没有触及的其他部分。最好拉起我的袖子..。
发布于 2018-06-10 17:26:03
我不认为使用md5生成唯一ids的意义。显然,您没有尝试创建加密安全值,而且在您的示例中它也是不安全的。函数改为uniqid()函数。它是为无碰撞而设计的。它根据当前时间(以微秒为单位)创建唯一标识符。您可以使用第二个参数(更大的熵)来创建更独特的值。
$uid = uniqid('some prefix', true);单
发布于 2018-06-10 17:16:54
md5不再安全了。从理论上讲,可以从不同的来源获得相同的散列,这并不容易,但它是可能的。似乎您想要生成唯一的ids,所以可能是标准的uuid,这是您的一个选项:https://docs.mongodb.com/manual/geospatial-queries/
发布于 2018-06-10 19:40:34
谢谢大家。通过在这篇文章中的评论,我不得不坐视不理,重新思考我是如何实现真正的系统的。我将减少对用户id使用auto_increment,使用uniqid()来处理系统事件,并将类似于hash_password()的内容用于我在这里没有触及的其他部分。最好拉起我的袖子..。
https://stackoverflow.com/questions/50785863
复制相似问题