当我在终端
中执行此命令时echo -n 1 | sha256sum
然后命令输出如下所示:
6b86b273ff34fce19d6b804eff5a3f5747ada4eaa22f1d49c01e52ddb7875b4b
但是当我使用perl脚本时使用此代码:
#!/usr/bin/perl
use strict;
use warnings;
my $text = '1';
my $hash = Digest::SHA->sha256_hex($text);
print $hash;
然后脚本输出如下所示:
f3a94951713ca935dcac0422747fb3e435cd8c6785c91ff5d9477e573df9ca28
我认为问题在于使用字符串$ text编码进入哈希函数。有人可以解释我必须如何正确地做到这一点吗?
答案 0 :(得分:4)
您无法使用Digest::SHA->sha256_hex(1)
,因为它实际上是Digest::SHA::sha256_hex("Digest::SHA", 1)
。
使用
Digest::SHA::sha256_hex(1)
或
use Digest::SHA qw(sha256_hex);
sha256_hex(1);
或(OOP式)
Digest::SHA->new(256)->add(1)->hexdigest()