太空& SHA-2的时间复杂度

时间:2017-11-29 16:10:41

标签: algorithm hash time-complexity sha space-complexity

我想知道SHA-2的空间和时间复杂性是什么。我试着环顾四周,没有真正得到一个直截了当的答案。谁能帮我吗?非常感谢!

1 个答案:

答案 0 :(得分:1)

例如,让我们考虑 SHA-256

根据给定here的算法描述,主要步骤是:

  1. 初始化 h1,..,h8(前 32 个素数 8 的平方根的小数部分的前 2..19 位)。
  2. 初始化 k1,...,k64(前 32 个素数 64 的立方根的小数部分的前 2..311 位)。

由于它们的数量是固定的,因此它们初始化所需的时间复杂度和空间复杂度是恒定的。

  1. 将消息分成 512- 位部分,并对每个 512- 位部分执行以下操作:

    3.1 通过使用恒定数量的按位和算术运算,在 1536 次迭代中计算 48 - 位数。可以在两者之间使用几个临时变量。

    3.2 设置额外的 8 变量 a1,...,a8 等于 h1,...,h8

    3.3 通过使用固定数量的变量并执行固定数量的按位和算术运算,在循环 a1,...,a8 次中不断更新 64

    3.4 将 a1,...,a8 添加到 h1,...,h8

  2. 连接 h1,...,h8

如上所示,1) 和 2) 的时间和空间复杂度为 O(1)。然后,对于从 4.1) 到 4.4) 的每个独立步骤,它们也是固定的。唯一不恒定的是输入消息的大小,因此 4) 整体的时间复杂度为 O(n)。空间复杂度为 O(1),因为始终使用固定数量的临时变量,并且每次迭代都可以重复使用 1536 - 3) 中使用的位变量。

其他基于 SHA-2 的算法,如 SHA-512SHA-384 具有相同的复杂性,因为它们的不同之处主要在于3.3 中的迭代次数)或字长。

其中,时间复杂度为 O(n),空间复杂度为 O(1)。