2010-08-06 118 views

回答

6

没有,Digest::SHA1是遗留的,因为是SHA1。每Digest::SHA1文档:

在2005年,安全漏洞的SHA-1被确定,即可能的数学弱点可能存在,表明较强的散列函数是可取的。 Digest :: SHA模块在SHA系列中实现了更强大的算法。

它明确提及Digest::SHA。在Digest::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 

Digest是在Digest命名空间中的所有模块工厂,它优先Digest::SHADigest::SHA1。您甚至可以认为Digest::SHA1已过时两次,因为它已被Digest::SHA2取代。

我认为这可能有助于证实术语“弃用”。我的意思是,Digest::SHA1对于仍然在SHA系列中的非SHA1哈希值没有用 - 其他发行版可以处理更多.Digest :: SHA1也比较慢..据我所知,仍然支持有一个稳定的版本不是所有早就说过:文摘 - SHA1-2.13 - 2010年7月3日 - 伊斯勒的Aas

+0

:: SHA模块也包含SHA-2算法......但是如果你*仍然在计划使用SHA-1,那么它就不是另一种方式。我查看了文档,但没有看到任何暗示Digest :: SHA1是遗留的或已弃用的内容。 – xenoterracide 2010-08-06 03:04:02

+1

@ xenoterracid,错,它仍然是一个争论。你是否希望将它们都加载到内存中,因为其他模块希望在不是SHA1的同一个系列中实现散列?你是否希望依靠不同的发行版来维护开放的错误,当它只支持新版功能的一个子集 - 并且在那个时候**它会更慢** ...... – 2010-08-06 03:18:48

+2

这是一个更好的论点; ),而不是根据您使用的安全漏洞来讨论可能相关或可能不相关的安全缺陷。 – xenoterracide 2010-08-06 03:33:01

0

的东西,写使用Digest::SHA1::sha1,或者(在一个合适的愚蠢的)不"Digest::$type"->new,而不是Digest->new($type)可能需要Digest::SHA1。除此之外,Digest::SHA是首选,默认情况下将使用Digest->new("SHA-1")

相关问题