Perl中Crypt :: PBKDF2中HMACSHA2哈希的大小是多少?

问题描述

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

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

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

输出哈希的认大小(以字节为单位,不是位)。如果有值 未提供,输出大小取决于hash_class / hasher ,并且等于后端哈希的输出大小(例如20 HMACSHA1的字节)。

但是实际的输出大小是多少?

解决方法

32字节

您可以在source codeCrypt::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。