Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/36.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Security 加密哈希函数的时间复杂度是多少?_Security_Time Complexity_Big O_Cryptographic Hash Function - Fatal编程技术网

Security 加密哈希函数的时间复杂度是多少?

Security 加密哈希函数的时间复杂度是多少?,security,time-complexity,big-o,cryptographic-hash-function,Security,Time Complexity,Big O,Cryptographic Hash Function,比如说MD5或SHA-1?这两者的时间复杂度是多少?我试图在互联网上找到它,但它是非常有限的,我得到的是,他们都是O(n)。有人能进一步启发我吗?也许给我一个最坏和最好的情况 MD5和SHA-1算法——这两种算法都是加密安全的,不应再使用它们了——基于。这意味着它们是由 从一个分组密码开始,它将固定宽度的比特块作为输入,并输出相同大小的固定宽度比特块 使用填充将输入填充到块大小的某个倍数,然后 迭代地将分组密码应用于输入的若干位的组合,加上先前分组密码的初始化值或输出 因为分组密码工作在一个固定

比如说MD5或SHA-1?这两者的时间复杂度是多少?我试图在互联网上找到它,但它是非常有限的,我得到的是,他们都是O(n)。有人能进一步启发我吗?也许给我一个最坏和最好的情况

MD5和SHA-1算法——这两种算法都是加密安全的,不应再使用它们了——基于。这意味着它们是由

  • 从一个分组密码开始,它将固定宽度的比特块作为输入,并输出相同大小的固定宽度比特块
  • 使用填充将输入填充到块大小的某个倍数,然后
  • 迭代地将分组密码应用于输入的若干位的组合,加上先前分组密码的初始化值或输出
  • 因为分组密码工作在一个固定大小的比特块上,所以运行它的时间复杂度是O(1)。该分组密码总共有Θ(n)个应用程序(输入被分割成固定大小的块,因此这些块中有Θ(n)个),计算填充位的成本可能是O(1),但可能是O(n)。总的来说,这意味着计算这些散列函数的运行时是Θ(n),这是有意义的,因为每个位至少访问一次,并且每个位完成的工作是恒定的


    分组密码的实现方式通常使它们在任何输入比特组合上运行所需的时间完全相同,或者至少是非常接近相同的时间,以使它们能够抵抗使用计算分组密码所需的时间来窃取某些比特的情况。因此,如果这些哈希函数在相同大小的不同输入上花费不同的时间来完成,这将是非常不寻常的。因此,与运行时是Θ(n)这一事实无关,您不应该期望在挂钟运行时中看到太多变化。

    MD5和SHA-1算法都是基于。这意味着它们是由

  • 从一个分组密码开始,它将固定宽度的比特块作为输入,并输出相同大小的固定宽度比特块
  • 使用填充将输入填充到块大小的某个倍数,然后
  • 迭代地将分组密码应用于输入的若干位的组合,加上先前分组密码的初始化值或输出
  • 因为分组密码工作在一个固定大小的比特块上,所以运行它的时间复杂度是O(1)。该分组密码总共有Θ(n)个应用程序(输入被分割成固定大小的块,因此这些块中有Θ(n)个),计算填充位的成本可能是O(1),但可能是O(n)。总的来说,这意味着计算这些散列函数的运行时是Θ(n),这是有意义的,因为每个位至少访问一次,并且每个位完成的工作是恒定的

    分组密码的实现方式通常使它们在任何输入比特组合上运行所需的时间完全相同,或者至少是非常接近相同的时间,以使它们能够抵抗使用计算分组密码所需的时间来窃取某些比特的情况。因此,如果这些哈希函数在相同大小的不同输入上花费不同的时间来完成,这将是非常不寻常的。因此,与运行时是Θ(n)这一事实无关,您不应该期望在挂钟运行时中看到太多变化