2014-10-28 60 views
0

哪种文件命名方法更好?使用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?

+1

在samething因为一些愚蠢的文件系统不具有区分大小写的文件名,并且由于MD5哈希比只是被更多的含义随机的,即可以充当文件的指纹/校验和。 – 2014-10-28 04:21:00

+0

我们需要检查上传文件的总和是什么情况? – 2014-10-28 04:26:51

+0

它允许您验证内容未被更改。 – 2014-10-28 04:28:11

回答

0

我能想到的原因有两个:

  1. 一些文件系统(例如VFAT,FAT32)不支持区分大小写的文件名。
  2. MD5散列的值超出了随机值,即它可以用于指纹/校验文件。这可以帮助您:
    • 验证文件的内容自创建以来未发生更改;
    • 防止存储重复的内容。
+1

谢谢@Robby Cornelissen – 2014-10-28 04:37:28

+0

我怀疑用于防止存储重复的内容;即如果2个用户上传相同的图像,并且其中一个用户想要删除服务器上的图像,那么我会删除共享图像吗? – 2014-10-31 15:31:09

+0

@SacbmcpdSamuel那个论点不成立。在决定删除图像之前,检查图像是否仍被其他用户引用是很平常的。这与在清理桌子之前询问是否每个人都已吃完都是一样的。 – 2014-11-01 00:36:54

0

3个原因。

  • 没有多少人意识到兰特()给出更多的随机性
  • MD5在大多数情况下工作。从历史上看,它一直被用作一种独特的标识符,因此人们喜欢使用它,因为它很常见。正如@Robby指出的那样,一些操作系统(如Windows)不支持区分大小写的文件名。 aaAAaa.txtaaaaaa.txt在UNIX系统上的两个不同的事情,但在Windows系统
+0

谢谢@Krimson – 2014-10-28 04:37:13