MD5生成如何依赖于文件大小?

时间:2009-08-10 17:52:44

标签: encryption cryptography md5

是否有关于MD5如何依赖文件大小的效率分析。它实际上取决于文件大小或文件内容。因此,对于我有500mb文件的所有空格和一个带有电影的500mb文件,md5会花费相同的时间来生成哈希码吗?

5 个答案:

答案 0 :(得分:8)

根据定义,任何hashsum都是你所求和的字节数的总和。您必须至少通过流读取文件 - 更多字节需要更长的时间来遍历。但是,我会说(一般来说)瓶颈确实会读取文件,无论你想用它做什么 - 一旦你阅读它就不会散列它。

编辑:我有点误读了这个问题。散列两个相同大小的文件需要花费相同的时间。 500mb的空间是500mb的字节,代表“空间”。这仍然是每字节8位数据,与任何其他文件相同。

答案 1 :(得分:3)

因为MD5主要由XOR,AND,OR和NOT操作组成,所以速度不依赖于包含1或0的给定位。


来自http://en.wikipedia.org/wiki/MD5

F有四种可能的功能;每轮使用不同的一个:

Source: http://upload.wikimedia.org/math/c/8/8/c887dfd80049b04ba54abfed7a04bda2.png
Source: http://upload.wikimedia.org/math/e/f/9/ef971bcd2ed5aeb59d6de12bcec32491.png
Source: http://upload.wikimedia.org/math/6/b/2/6b2e2f185f30889f1e37afe9ce29a096.png
Source: http://upload.wikimedia.org/math/c/8/8/c887dfd80049b04ba54abfed7a04bda2.png

Source: http://upload.wikimedia.org/math/d/9/6/d96277da48b2e8f86c7268f480a9e87c.png分别表示XOR,AND,OR和NOT操作。

答案 2 :(得分:2)

所有哈希值(包括MD5)都没有依赖于内容的性能。

答案 3 :(得分:2)

这是一个快速的实证检验。

# dd if=/dev/urandom of=randomfile bs=1024 count=512000
# dd if=/dev/zero of=zerofile bs=1024 count=512000

# time md5 randomfile 
MD5 (randomfile) = bb318fa1561b17e30d03b12e803262e4

real    0m2.753s
user    0m1.567s
sys 0m1.157s

# time md5 zerofile
MD5 (zerofile) = d8b61b2c0025919d5321461045c8226f

real    0m2.761s
user    0m1.567s
sys 0m1.168s

根据之前的答案,这是预期的,暗指MD5算法中使用的位操作。

答案 4 :(得分:0)

与大多数其他哈希算法一样,MD5在块上运行。对于输入的每个512位块,它执行相同的操作,并将输出用作下一个块的输入的一部分。

该操作包含相同的基本操作(XOR,AND,NOT等)。在我所知道的所有处理器上,无论参数是什么,这些操作都将花费相同的时间。因此,MD5处理输入所需的时间应该与输入中的512位块的数量呈线性关系。