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

Encryption MD5的生成如何依赖于文件大小?,encryption,cryptography,md5,Encryption,Cryptography,Md5,是否有关于MD5如何依赖于文件大小的效率分析。它实际上取决于文件大小或文件内容。所以我有一个500mb的文件,里面有所有的空格,还有一个500mb的文件,里面有电影,md5会用同样的时间来生成哈希代码吗?根据定义,任何哈希和都是你要求和的字节的数学和。您必须至少通过一个流来读取文件-更多的字节需要更长的时间来遍历。然而,我想说(一般来说)瓶颈确实是读取文件,不管您试图如何处理它——而不是在读取后对其进行散列 编辑:我有点误解了这个问题。散列两个大小相同的文件所需的时间完全相同。500mb的空格是

是否有关于MD5如何依赖于文件大小的效率分析。它实际上取决于文件大小或文件内容。所以我有一个500mb的文件,里面有所有的空格,还有一个500mb的文件,里面有电影,md5会用同样的时间来生成哈希代码吗?

根据定义,任何哈希和都是你要求和的字节的数学和。您必须至少通过一个流来读取文件-更多的字节需要更长的时间来遍历。然而,我想说(一般来说)瓶颈确实是读取文件,不管您试图如何处理它——而不是在读取后对其进行散列


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

一般来说,所有哈希,包括MD5,都不具有依赖于内容的性能。

因为MD5主要由XOR、and、OR和not操作组成,速度不依赖于包含1或0的给定位


发件人:

有四种可能的函数F;在每一轮中使用不同的一个:






分别表示XOR、AND、OR和NOT操作。

这里是一个快速的经验测试

# 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算法中使用的位操作的答案,这是预期的。

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


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

计算机如何能够在与长字节数组完全相同的时间内遍历短字节数组?呃,我明白你现在的意思了。一个字节是空格,另一个字节大小不同,内容不同。Nevermind:)如果稍后编辑页面,这些图像可能会消失-您可能希望在某处镜像它们…@bdonlan向stack.imgur添加了图片,并引用了原始源代码的描述