File upload MD5 uuid冲突?
我正在处理图像上传,我想要一些关于命名文件和文件夹的建议。目前,我正在使用以下命令生成文件名:File upload MD5 uuid冲突?,file-upload,file,md5,collision-detection,uuid,File Upload,File,Md5,Collision Detection,Uuid,我正在处理图像上传,我想要一些关于命名文件和文件夹的建议。目前,我正在使用以下命令生成文件名: md5( microtime() ) . $this->user_id 它的输出类似于: e89ae1857038d0e5d0f8092e6c5390b91 然后,我使用该文件名的前3个字符生成文件夹。 这将类似于: /e/8/9 因此,它最终是: /e/8/9/e89ae1857038d0e5d0f8092e6c5390b91 我正在使用md5,这样它就可以在文件夹中均匀地分布文件。这是一个
md5( microtime() ) . $this->user_id
它的输出类似于:
e89ae1857038d0e5d0f8092e6c5390b91
然后,我使用该文件名的前3个字符生成文件夹。
这将类似于:
/e/8/9
因此,它最终是:
/e/8/9/e89ae1857038d0e5d0f8092e6c5390b91
我正在使用md5,这样它就可以在文件夹中均匀地分布文件。这是一个好的uuid吗?有可能发生碰撞吗
提前感谢。任何哈希都有可能发生冲突。仔细想想,散列接受无限多的输入,并将其转换为有限多的输出
但是,对于所有实际(非学术)意义而言,根本不存在碰撞。2^128是一个如此巨大的数字,即使在宇宙热死之前也不会发生。即使我在末尾添加了一个递增的用户id?如果您的用户id是唯一的,那么就不会发生这样的冲突。啊。我以为你的用户id在括号里。不,根据定义,您不应该发生冲突。(需要明确的是,即使您使用的是世界上最差的哈希算法,也不会发生冲突。例如,如果您的MD5始终返回一个包含32个零的字符串,会怎么样?您的唯一用户id仍将完全消除重复项。)