2010-08-06 141 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")