Perl 中 Crypt::P BKDF2 中的 HMACSHA2 哈希值是多少?



我想在数据库中存储密码哈希。将使用生成哈希

my $PBKDF2 = Crypt::PBKDF2->new(
hash_class => 'HMACSHA2',
hash_args => {
sha_size => 512,
},
iterations => 10000,
salt_len => 10,
);

在地穴的吊舱中::PBKDF2我发现:

输出哈希的默认大小(以字节而非位为单位(。如果一个值没有提供,输出大小取决于hash_class/hasher选择,并且将等于后端散列的输出大小(例如20HMACSHA1的字节(。

但默认输出大小实际上是多少?

32字节

您可以在Crypt::PBKDF2::Hash::HMACSHA2的源代码中找到这些信息。定义默认大小的代码是:

has 'sha_size' => (
is => 'ro',
isa => Type::Tiny->new(
name => 'SHASize',
parent => Enum[qw( 224 256 384 512 )],
display_name => 'valid number of bits for SHA-2',
),
default => 256,
);

用于返回大小的函数将sha_size除以8:

sub hash_len {
my $self = shift;
return $self->sha_size() / 8;
}

因此,默认情况下返回256/8=32。

最新更新