Perl 与Digest::SHA1相比,Digest::SHA有哪些优势?

Perl 与Digest::SHA1相比,Digest::SHA有哪些优势?,perl,sha1,cpan,digest,Perl,Sha1,Cpan,Digest,与其他方法相比,使用有什么好处吗?两者似乎都得到了维护,但我看不出Digest::SHA1与Digest::SHA存在的理由,Digest::SHA1是遗留的,就像SHA1一样。根据摘要::SHA1的文件: 2005年,在SHA-1中发现了安全缺陷,即可能存在数学缺陷,这表明需要更强的哈希函数。SHA模块实现了SHA系列中更强的算法 它清楚地引用了摘要::SHA。Digest::SHA中的实现比Digest::SHA1快一点(根据Digest.pm的文档,您可能应该使用的是) Digest是Di

与其他方法相比,使用有什么好处吗?两者似乎都得到了维护,但我看不出Digest::SHA1与
Digest::SHA

存在的理由,
Digest::SHA1
是遗留的,就像
SHA1
一样。根据
摘要::SHA1
的文件:

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

它清楚地引用了
摘要::SHA
Digest::SHA
中的实现比
Digest::SHA1
快一点(根据
Digest.pm
的文档,您可能应该使用的是)

Digest
Digest
命名空间中所有模块的工厂,它将
Digest::SHA
置于
Digest::SHA1
之上。您甚至可以争辩说,
Digest::SHA1
被两次过度弃用,因为它被
Digest::SHA2
取代


我相信在这里充实“弃用”一词可能是有用的。我只是说,
Digest::SHA1
对于仍在SHA系列中的非SHA1散列没有用处——其他发行版可以处理更多。。摘要::SHA1也比较慢。。据我所知,它仍然受到支持,并在不久前有一个稳定的版本:Digest-SHA1-2.13-2010年7月3日-Gisle Aas

使用
Digest::SHA1::SHA1
编写的东西,或者(在一种愚蠢的情况下)使用
Digest:$type->new
而不是
Digest->->new($type)
可能需要
摘要::SHA1
。除此之外,首选
Digest::SHA
,默认情况下,它将用于
Digest->new(“SHA-1”)

:SHA模块还包括SHA-2算法。。。但是,如果您仍然打算使用SHA-1,那么从另一方面来说,这并不是一个争论。我查看了文档,没有发现任何迹象表明Digest::SHA1是遗留的或不推荐的。@Xenotracid,错了,它仍然是一个参数。是否希望将这两个模块都加载到内存中,因为其他模块希望在不是SHA1的同一系列中实现哈希?当它只支持较新版本功能的一个子集时,您是否希望依赖一个不同的发行版来维护开放的Bug?这样做会更慢…这是一个更好的参数;)与谈论安全性缺陷不同,安全性缺陷可能相关,也可能不相关,这取决于您使用它的目的。选择
Digest::SHA
而不是
Digest::SHA1
的另一个重要原因是前者是一个核心库(从Perl 5.10.0开始),后者不是(也永远不会是).值得一提的是,Digest::SHA1现在已经死了。是的,它的包装已经不可用了。其他从Debian下载的发行版(如Ubuntu)也遵循同样的路径。
Algorithm      Size    Implementation                  MB/s
SHA-1          160     Digest::SHA v4.3.1              58.9
SHA-1          160     Digest::SHA1 v2.10              48.8