Есть ли какие-либо преимущества при использовании Digest::SHA по сравнению с Digest::SHA1 или наоборот? оба, похоже, поддерживаются, но я не вижу причины, чтобы Digest :: SHA1 существовал даже с существованием Digest::SHA
.В чем преимущества Digest :: SHA over Digest :: SHA1?
ответ
Существует нет, 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::SHA
над Digest::SHA1
. Вы даже можете утверждать, что Digest::SHA1
дважды устарел, поскольку он был заменен на Digest::SHA2
.
Я считаю, что, вероятно, полезно обосновать здесь термин «устаревший». Я просто хочу сказать, что Digest::SHA1
не полезен для хэшей не SHA1, которые все еще находятся в семействе SHA - другие дистрибутивы могут обрабатывать больше. Digest :: SHA1 также медленнее. Насколько мне известно, он по-прежнему поддерживается и имеет стабильный релиз не так давно: Digest-SHA1-2.13 - 3 июля 2010 - Gisle Aas
Материал, который был написан для использования Digest::SHA1::sha1
или которые (в порыве глупостей) делает "Digest::$type"->new
вместо Digest->new($type)
может понадобиться Digest::SHA1
. Помимо этого, Digest::SHA
является предпочтительным, и он будет использоваться по умолчанию для Digest->new("SHA-1")
.
Модуль SHA включает также алгоритмы SHA-2 ... но если вы * * все еще планируете использовать SHA-1, это действительно не аргумент в одну сторону другой. Я просмотрел документы и не видел ничего, чтобы предположить, что Digest :: SHA1 был устаревшим или устаревшим. – xenoterracide
@xenoterracid, Неправильно, это еще аргумент. Вы хотите, чтобы оба они были загружены в память, потому что какой-то другой модуль хочет реализовать хэш в том же семействе, что и не SHA1? Вы хотите зависеть от другого дистрибутива при сохранении открытых ошибок, когда он поддерживает только подмножество функциональности более нового - и при этом он делает это медленнее ** ... –
Это лучший аргумент;), в отличие от разговоров о недостатках безопасности, которые могут или не могут быть релевантными в зависимости от того, для чего вы его используете. – xenoterracide