gpt4 book ai didi

java - SHA-1 需要多长时间来创建哈希?

转载 作者:搜寻专家 更新时间:2023-10-30 21:21:52 25 4
gpt4 key购买 nike

创建数据的 SHA-1 散列大约需要多长时间,需要多少处理能力?根据原始数据大小,这是否有很大差异?生成标准 HTML 文件的哈希值会比字符串“blah”花费更长的时间吗? C++、Java 和 PHP 的速度如何比较?

最佳答案

你问了很多问题,希望我能逐一回答。

SHA-1(以及许多其他设计为加密强度高的散列)基于对固定大小的数据 block 重复应用加密或解密例程。因此,在计算长字符串的哈希值时,该算法比计算小字符串的哈希值所花费的时间成比例地多。在数学上,我们说当使用 SHA-1 时,对长度为 N 的字符串进行哈希运算的运行时间为 O(N)。因此,对 HTML 文档进行哈希处理应该比对字符串“blah”进行哈希处理花费更长的时间,但只是按比例计算。执行哈希不会花费更长的时间。

至于在速度方面比较 C++、Java 和 PHP,这是一个危险的领域,我的回答很可能会遭到抨击,但一般来说 C++ 比 Java 稍快,Java 稍快比 PHP 快。如果编写得不好,用其中一种语言编写的良好哈希实现可能会大大优于其他语言。但是,您不必为此担心。实现您自己的哈希函数、加密例程或解密例程通常被认为是一个坏主意,因为它们通常容易受到 side-channel attacks 的攻击。在这种情况下,攻击者可以通过在实现中使用通常极难预料的错误来破坏您的安全性。如果你想使用一个好的散列函数,使用一个预先编写的版本。它可能比您手动执行的任何操作都更快、更安全且更不容易出错。

最后,我建议根本不要使用 SHA-1。 SHA-1 具有已知的加密弱点,您应该考虑改用强哈希算法,例如 SHA-256。

希望这对您有所帮助!

关于java - SHA-1 需要多长时间来创建哈希?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7060091/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com