2012-01-25 24 views
1

我有一个数百万个文件的列表,并将它们上传到亚马逊的S3。我需要为每个图像创建唯一的键。我宁愿不使用md5,因为它需要扫描整个文件,这可能会很慢。此外,可能存在重复的图像,这在我们的应用程序中是允许的。任何建议快速生成几乎保证是唯一的密钥?最好是32个字符的字母数字(可区分大小写)。谢谢!什么是在Python中为一个非常大的图像集合生成唯一哈希键的好策略?

+0

是否有上传重复图像的理由?如果使用文件散列作为密钥,则可以存储一个图像,并且可以多次引用该图像,从而压缩使用的空间量。 – 2012-01-25 18:59:28

+0

您的要求是很有缺陷的。 (1)如果事先知道所有可能的哈希输入,则哈希只能是唯一的,即便如此,您也必须生成专门的算法。 (2)如何忽略大部分输入(即不扫描全部/大部分文件),希望低冲突? (3)相同的输入应该产生相等的输出(从而捕获重复的图像),否则它不是大多数定义的散列。 – delnan

+1

你为什么要散列?为什么不使用唯一的ID(用户名+时间戳+图像数量已存储的用户数) – Sid

回答

3

我不会称之为散列,因为这意味着根据文件内容生成一个唯一的值。

取而代之,UUIDs可能就是你所追求的。

+0

UUID有多好?碰撞的可能性有多大? – ensnare

+1

非常低,如果实施得当,这就是整个观点:http://en.wikipedia.org/wiki/Universally_unique_identifier#Random_UUID_probability_of_duplicates –

+1

实际上没有,http://en.wikipedia.org/wiki/Uuid – Abizern

-1

datetime.now()(在文件上传时)的MD5将是OK,恕我直言。

+0

你的意思是Date.now ()...如果你这样做,你不需要唯一性的MD5 ... – Relic

相关问题