使用Digest::SHA优于Digest::SHA1或反之亦然?两者似乎都得到维护,但我没有看到Digest :: SHA1存在Digest::SHA
存在的原因。
答案 0 :(得分:6)
没有,Digest::SHA1
是遗产,SHA1
也是如此。根据{{1}}的文档:
2005年,在SHA-1中发现了安全漏洞,即可能存在数学上的弱点,表明需要更强的哈希函数。 Digest :: SHA模块在SHA系列中实现了更强大的算法。
它清楚地引用了Digest::SHA1
。 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::SHA
。您甚至可以认为Digest::SHA1
被弃用了两倍,因为它被Digest::SHA1
取代。
我认为在这里证实“弃用”一词可能很有用。我的意思是Digest::SHA2
对于仍在SHA系列中的非SHA1哈希没有用处 - 其他发行版可以处理更多.. Digest :: SHA1也比较慢..据我所知仍然支持并且在很久以前就有一个稳定的版本: Digest-SHA1-2.13 - 2010年7月3日 - Gisle Aas
答案 1 :(得分:0)
使用Digest::SHA1::sha1
编写的内容,或"Digest::$type"->new
代替Digest->new($type)
的内容({1}}可能需要Digest::SHA1
。除此之外,首选Digest::SHA
,默认情况下会Digest->new("SHA-1")
使用它。