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

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

Решение

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

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

▶ Run
#!/usr/bin/perl

use Digest::SHA qw(sha256_hex);

my $var = 123;

my $sha256_hash = sha256_hex($var);

print $sha256_hash;

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

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

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

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

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

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

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

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

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

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

Комментарии