MD5 生成如何取决于文件大小?

发布于 2024-08-02 01:47:44 字数 118 浏览 3 评论 0原文

有没有关于MD5如何依赖于文件大小的效率分析? 它实际上取决于文件大小或文件内容吗? 那么,对于我有一个 500mb 的文件(全是空格)和一个 500mb 的文件(其中有电影),md5 会花费相同的时间来生成哈希码吗?

Is there any efficiency analysis of how MD5 dependent on the file size. Is it actually dependent of file size or content of the file. So for i have 500mb file with all blank spaces and a 500mb file with movie in it, would md5 take same time to generate the the hash code?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

窝囊感情。 2024-08-09 01:47:44

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

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

Any hashsum is, by definition, a mathematical sum of the bytes of what you're summing. You have to read the file through a stream at the very least - more bytes take longer to traverse. However, I'd say (generally speaking) the bottleneck will indeed be reading the file, no matter what you're trying to with it - not hashing it once you've read it.

Edit: I kinda misread the question. It will take exactly the same amount of time to hash two files of equal size. 500mb of spaces is 500mb of bytes which represent "space". That's still 8 bits of data per byte, same as any other file.

°如果伤别离去 2024-08-09 01:47:44

这是一个快速的实证测试。

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

Here's a quick empirical test.

# 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

This is expected as per previous answers alluding to the bit manipulations used in the MD5 algorithm.

为人所爱 2024-08-09 01:47:44

由于 MD5 主要由 XOR、AND、OR 和 NOT 运算组成,因此速度不依赖于包含 1 或 0 的给定位。


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

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

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

来源:http://upload.wikimedia.org/math/d/9/6/d96277da48b2e8f86c7268f480a9e87c。 png分别表示 XOR、AND、OR 和 NOT 运算。

Because MD5 consists mostly of XOR, AND, OR and NOT operations, the speed is not dependent on a given bit containing a 1 or a 0.


From http://en.wikipedia.org/wiki/MD5:

There are four possible functions F; a different one is used in each round:

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.pngdenote the XOR, AND, OR and NOT operations respectively.

故事灯 2024-08-09 01:47:44

一般而言,所有散列(包括 MD5)的性能都不依赖于内容。

All hashes in general, and including MD5, do not have performance dependent upon the content.

叫思念不要吵 2024-08-09 01:47:44

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

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

MD5, like most other hash algorithms, operates on blocks. For each 512-bit block of the input it performs the same operation and uses the output as part of the input for the next block.

The operation consists of the same basic operations (XOR, AND, NOT etc.). On all processors that I know, these operations will take the same time, no matter what the arguments are. So the time MD5 should take to process input should be linear in the number of 512-bit blocks in the input.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文