Jak uzyskać SHA1 hash w Perl

Zadanie. W Perlu kodzie jest zmienna. Trzeba obliczyć SHA1 hash od wartości tej zmiennej.

Rozwiązanie

Rozwiązanie — użyć Perl biblioteki Digest::SHA. Biblioteka Digest::SHA idzie w parze z Perl, więc jeśli masz Perl, to ta biblioteka jest dostępna raz, dodatkowo nic instalować nie trzeba.

Zobacz SHA1 hash można za pomocą takiego kodu:

▶ Run
#!/usr/bin/perl

use Digest::SHA qw(sha1_hex);

my $var = 123;

my $sha1_hash = sha1_hex($var);

print $sha1_hash;

Ten program wypisze na ekran ciąg '40bd001563085fc35165329ea1ff5c5ecbdbbeef'.

  • use Digest::SHA qw(sha1_hex); — podłączamy Perl biblioteki i mówimy, że z tej biblioteki potrzebujemy funkcja sha1_hex
  • my $var = 123; — stworzyliśmy zmienną i umieścić tam wartość 123
  • my $sha1_hash = sha1_hex($var); — za pomocą funkcji sha1_hex . liczymy SHA1 hash od wartości zmiennej $var i umieścić wynik w zmiennej $sha1_hash
  • print $sha1_hash; — wyprowadzili wartość zmiennej $sha1_hash na ekran

Jeśli po podłączeniu biblioteki nie określić, że potrzebujemy funkcja sha1_hex, a po prostu napisz do use Digest::SHA;, to po uruchomieniu programu zostanie błąd:

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

Format zwracanej wartości funkcji sha1_hex

Funkcja sha1_hex zawsze zwraca ciąg znaków. W tym wierszu jest zawsze dokładnie 40 znaków. W tym wierszu mogą być cyfry od 0 do 9 i małych liter od 'a' do 'f'. Inne znaki w tym wierszu nie może być.

Funkcja sha1_hex zwraca SHA1 w formie wiersza, w którym zawiera liczbę w systemie szesnastkowym.

W jakich wersjach Perla biblioteka Digest::SHA jest dostępna raz

Na początku tego tekstu jest napisane, że biblioteka Digest::SHA jest dostarczany wraz z Perl i jeśli masz Perl, to ta biblioteka raz jest dostępna. Właściwie to nie do końca prawda. Biblioteka Digest::SHA po raz pierwszy pojawiła się w Perl w wersji 5.10. Więc jeśli masz Perl w wersji 5.8 lub poniżej tej biblioteki należy umieścić dodatkowo. Ale jeszcze lepiej zaktualizować Perl na bardziej świeże. Perl 5.8 ukazał się w 2002 roku.

Inne artykuły