【问题标题】:What are the advantages of Digest::SHA over Digest::SHA1?Digest::SHA 与 Digest::SHA1 相比有哪些优势?
【发布时间】:2011-03-26 03:28:00
【问题描述】:

使用Digest::SHADigest::SHA1 相比有什么优势吗?反之亦然?两者似乎都得到了维护,但我看不到 Digest::SHA1 存在 Digest::SHA 的理由。

【问题讨论】:

    标签: perl sha1 cpan digest


    【解决方案1】:

    没有,Digest::SHA1 是旧版,SHA1 也是。根据Digest::SHA1 的文档:

    2005 年,在 SHA-1 中发现了安全漏洞,即可能存在数学缺陷,表明需要更强的哈希函数。 Digest::SHA 模块实现了 SHA 系列中更强大的算法。

    它明确引用了Digest::SHADigest::SHA 中的实现比 Digest::SHA1 快一点(根据 Digest.pm 的文档——无论如何你应该使用它)。

    Algorithm      Size    Implementation                  MB/s
    SHA-1          160     Digest::SHA v4.3.1              58.9
    SHA-1          160     Digest::SHA1 v2.10              48.8
    

    DigestDigest 命名空间中所有模块的工厂,它优先于Digest::SHA 而不是Digest::SHA1。您甚至可以争辩说 Digest::SHA1 已被弃用两倍,因为它已被 Digest::SHA2 取代。

    我认为在这里证实“已弃用”一词可能很有用。我只是说Digest::SHA1 对仍在 SHA 系列中的非 SHA1 哈希没有用——其他发行版可以处理更多.. Digest::SHA1 也更慢.. 据我所知,它仍然是不久前支持并发布了稳定版本:Digest-SHA1-2.13 - 2010 年 7 月 3 日 - Gisle Aas

    【讨论】:

    • ::SHA 模块也包含 SHA-2 算法...但如果您仍计划使用 SHA-1,那真的不是另一种说法.我查看了文档,没有看到任何表明 Digest::SHA1 是旧版或已弃用的内容。
    • @xenoterracid,错了,这仍然是一个论点。您是否希望将它们都加载到内存中,因为其他一些模块希望在同一个系列中实现不是 SHA1 的哈希?当它只支持较新版本的功能的子集时,您是否希望依赖于维护未解决的错误的不同发行版 - 并且 它的运行速度较慢...
    • 这是一个更好的论点 ;) 而不是谈论安全漏洞,这些漏洞可能相关也可能不相关,具体取决于您使用它的目的。
    • 选择Digest::SHA 而不是Digest::SHA1 的另一个重要原因是前者是一个核心库(从Perl 5.10.0 开始),而后者不是(而且永远不会是)。
    • 值得一提的是 Digest::SHA1 现在已经死了。它是removed from Debian Wheezy,它的包不再可用。来自 Debian 的其他发行版(例如 Ubuntu)遵循相同的路径。
    【解决方案2】:

    使用Digest::SHA1::sha1 编写的东西,或者(出于愚蠢)使用"Digest::$type"->new 而不是Digest->new($type) 的东西可能需要Digest::SHA1。除此之外,Digest::SHA 是首选,Digest->new("SHA-1") 默认使用它。

    【讨论】:

      猜你喜欢
      • 2013-09-22
      • 2012-05-17
      • 1970-01-01
      • 2016-01-04
      • 2011-08-02
      • 1970-01-01
      • 1970-01-01
      • 2010-09-09
      • 2021-05-28
      相关资源
      最近更新 更多