Каков размер хэша HMACSHA2 в Crypt::PBKDF2 в Perl?

Я хочу хранить хэши паролей в базе данных. Хэши будут генерироваться с

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

В Pod of Crypt::PBKDF2 я нахожу:

Размер по умолчанию (в байтах, а не в битах) выходного хэша. Если значение не указано, выходной размер зависит от выбранного hash_class / hasher и будет равен выходному размеру внутреннего хэша (например, 20 байт для HMACSHA1).

Но каков на самом деле размер вывода по умолчанию?


person Skeeve    schedule 07.09.2020    source источник


Ответы (1)


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.

person Dada    schedule 07.09.2020
comment
Так как я использую 512, для меня это 64. Что мне действительно было нужно, так это размер, который мне нужен в базе данных. Кажется, добавив некоторые накладные расходы base64 плюс стандартные вещи, которые добавляет модуль, я получаю 135 байт, необходимых для хранения. Я был немного не уверен, может ли измениться количество байтов. Благодаря тому, что вы указали мне на источник, я уверен, что размер всегда будет одинаковым. - person Skeeve; 07.09.2020