使用MD5或随机文件命名?
哪种文件命名方法更好?使用MD5或随机文件命名?
方法1:
- MD5的字符串/文件(其他),我们得到使用该结果[0-9A-Z]与32串长度
- (10 + 26)个字符^ 32个组合
方法2 as outlined here:
- 用PHP随机生成一组字符[0-9A-ZA-Z]字符32字符串长度
- (10 + 26 + 26)^ 32个组合
显然方法2具有更多的组合和随机性,但为什么没有人使用方法2,但使用方法1?
我能想到的原因有两个:
- 一些文件系统(例如VFAT,FAT32)不支持区分大小写的文件名。
- MD5散列的值超出了随机值,即它可以用于指纹/校验文件。这可以帮助您:
- 验证文件的内容自创建以来未发生更改;
- 防止存储重复的内容。
谢谢@Robby Cornelissen – 2014-10-28 04:37:28
我怀疑用于防止存储重复的内容;即如果2个用户上传相同的图像,并且其中一个用户想要删除服务器上的图像,那么我会删除共享图像吗? – 2014-10-31 15:31:09
@SacbmcpdSamuel那个论点不成立。在决定删除图像之前,检查图像是否仍被其他用户引用是很平常的。这与在清理桌子之前询问是否每个人都已吃完都是一样的。 – 2014-11-01 00:36:54
3个原因。
- 没有多少人意识到兰特()给出更多的随机性
- MD5在大多数情况下工作。从历史上看,它一直被用作一种独特的标识符,因此人们喜欢使用它,因为它很常见。正如@Robby指出的那样,一些操作系统(如Windows)不支持区分大小写的文件名。
aaAAaa.txt
和aaaaaa.txt
在UNIX系统上的两个不同的事情,但在Windows系统
谢谢@Krimson – 2014-10-28 04:37:13
在samething因为一些愚蠢的文件系统不具有区分大小写的文件名,并且由于MD5哈希比只是被更多的含义随机的,即可以充当文件的指纹/校验和。 – 2014-10-28 04:21:00
我们需要检查上传文件的总和是什么情况? – 2014-10-28 04:26:51
它允许您验证内容未被更改。 – 2014-10-28 04:28:11