SHA256 дайджест в Perl - PullRequest
       69

SHA256 дайджест в Perl

9 голосов
/ 03 апреля 2012

Мне нужно выполнить хеширование адресов электронной почты SHA256, и мне нужен результат в виде строки.

Я пробовал следующее:

  use Digest::SHA qw(sha256);
  my $data = 'swaranga@gmail.com';
  my $digest = sha256($data);

  print $digest;

Но он печатает что-то вроде:

B/D6i1μû^Þ©Q;¢Þ

Мне нужен следующий вывод:

cbc41284e23c8c7ed98f589b6d6ebfd6

Вышеупомянутый хеш генерируется с помощью генератора SHA256 Apache DigestUtils .

Что я делаюнеправильно?Я новичок в Perl, так что извините, если это глупо.

Спасибо.

Ответы [ 2 ]

18 голосов
/ 03 апреля 2012

cbc41284e23c8c7ed98f589b6d6ebfd6 - это MD5 для swaranga@gmail.com, а не SHA-256


SHA для шифрования swaranga@gmail.com>>

 SHA-1:            3a3be7013e297e28d24979aadc4ae75d84ce0844
 SHA-256:          0947300f280d422f4418366931cebcfbd17f5ede1507a951153b0f15a21c10de
 SHA-384:          34c01f3956aac32aacae1a6cf67f8a66d441af06c9d36f580ce4be5b234b5399cd879231c49db5bec269309582c19432
 SHA-512:          db1aa053dd9ee191b091abbcb8bead2ec69a1ab2664bb1deeeedbdb49b25e7bc7680a7659ae88c046afdabf1e35ed0e068763f8754b369bfade69cf21f65d166
 SHA-1   (Base64): OjvnAT4pfijSSXmq3ErnXYTOCEQ=
 SHA-256 (Base64): CUcwDygNQi9EGDZpMc68+9F/Xt4VB6lRFTsPFaIcEN4=
 SHA-384 (Base64): NMAfOVaqwyqsrhps9n+KZtRBrwbJ029YDOS+WyNLU5nNh5IxxJ21vsJpMJWCwZQy
 SHA-512 (Base64): 2xqgU92e4ZGwkau8uL6tLsaaGrJmS7He7u29tJsl57x2gKdlmuiMBGr9q/HjXtDgaHY/h1Szab+t5pzyH2XRZg==

Если вы уверены, что хотите использовать SHA-256 и ищете вывод HEX , попробуйте следующее:

Сценарий:

#!/usr/bin/perl
use Digest::SHA qw(sha256);
print unpack("H*", sha256('swaranga@gmail.com')), "\n";

или

#!/usr/bin/perl
use Digest::SHA qw(sha256_hex);
print sha256_hex('swaranga@gmail.com'), "\n";

Вывод:

0947300f280d422f4418366931cebcfbd17f5ede1507a951153b0f15a21c10de

И если вы хотите MD5 с HEX выходом, то попробуйте это:

Сценарий:

#!/usr/bin/perl
use Digest::MD5 qw(md5);
print unpack("H*", md5('swaranga@gmail.com')), "\n";

или

#!/usr/bin/perl
use Digest::MD5 qw(md5_hex);
print md5_hex('swaranga@gmail.com'), "\n";

Вывод:

cbc41284e23c8c7ed98f589b6d6ebfd6
6 голосов
/ 03 апреля 2012

Вы, вероятно, хотите Digest::SHA qw(sha256_hex) Из CPAN Дайджест :: SHA Страница

Логически объединяет аргументы в одну строку и возвращает ее Дайджест SHA-1/224/256/384/512, закодированный в виде шестнадцатеричной строки.

...