Как получить SHA1 хеш в Perl

Задача. В Perl коде есть переменная. Нужно рассчитать SHA1 хеш от значения этой переменной.

Решение

Решение — использовать Perl библиотеку Digest::SHA. Библиотека Digest::SHA идет вместе с Perl, так что если у вас есть Perl, то эта библиотека сразу доступна, дополнительно устанавливать ничего не нужно.

Получить SHA1 хеш можно с помощью такого кода:

▶ Run
#!/usr/bin/perl

use Digest::SHA qw(sha1_hex);

my $var = 123;

my $sha1_hash = sha1_hex($var);

print $sha1_hash;

Эта программа выведет на экран строку '40bd001563085fc35165329ea1ff5c5ecbdbbeef'.

  • use Digest::SHA qw(sha1_hex); — мы подключаем Perl библиотеку и говорим что из этой библиотеки нам нужна функция sha1_hex
  • my $var = 123; — создали переменную и положили туда значение 123
  • my $sha1_hash = sha1_hex($var); — с помощью функции sha1_hex мы рассчитали SHA1 хеш от значения переменной $var и поместили результат в переменную $sha1_hash
  • print $sha1_hash; — вывели значение переменной $sha1_hash на экран

Если при подключении библиотеки не указать что нам нужна функция sha1_hex, а просто написать use Digest::SHA;, то при выполнении программы будет ошибка:

Undefined subroutine &main::sha1_hex called at script.pl line 7.

Формат возвращаемого значения функции sha1_hex

Функция sha1_hex всегда возвращает строку. В этой строке всегда ровно 40 символов. В этой строке могут быть цифры от 0 до 9 и латинские буквы в нижнем регистре от 'a' до 'f'. Других символов в этой строке быть не может.

Функция sha1_hex возвращает SHA1 в виде строки в котором содержится число в шестнадцатеричной системе счисления.

В каких версиях Perl библиотека Digest::SHA доступна сразу

В начале этого текста написано что библиотека Digest::SHA поставляется вместе с Perl и если у вас есть Perl, то эта библиотека сразу доступна. На самом деле это не совсем так. Библиотека Digest::SHA впервые появилась в Perl версии 5.10. Так что если у вас Perl версии 5.8 или ниже, то эту библиотеку нужно ставить дополнительно. Но еще лучше обновить Perl на более свежий. Perl 5.8 вышел в 2002 году.

Другие статьи

Комментарии