python sha1哈希计算的时间效率

时间:2017-09-28 16:19:16

标签: python performance time hash

对于这两种计算sha1哈希的方法,关于时间效率的问题,它们是否相同?

(1)将字符串拆分为小块并多次更新哈希

import hashlib

...
...
sha1 = hashlib.sha1()
sha1.update(chunk1)
sha1.update(chunk2)
...

(2)将完整的字符串传递给哈希函数并仅计算一次哈希值

import hashlib
...
...
sha1 = hashlib.sha1()
sha1.update(the_complete_string)
...

1 个答案:

答案 0 :(得分:1)

每个块都有额外的开销:

  • 您必须拆分字符串
  • 每个chunk都有对hashlib的python调用
  • 哈希库必须设置为处理每个块

因此,存在随着块数而扩展的开销。如果你有一定数量的块,那可能并不重要。 但是,如果您要将一个重要字符串拆分为一个字符的块并使用这些单字符块中的每一个进行更新,那么分块方法将比整个字符串方法慢得多。

也就是说,将块组合成单个字符串或字节对象会产生开销。如果您拥有的是块,并且您将它们组合在一起的唯一原因是哈希性能,这可能不会节省时间。