Я пытаюсь проверить соленые пароли с помощью Perl, и я застрял с распаковкой.
У меня есть соленый хешированный пароль, например, для SHA256: SSHA256 = SHA256 ('пароль' + 'соль')+ 'соль' в кодировке Base64, которая получает '{SSHA256} eje4XIkY6sGakInA + loqtNzj + QUo3N7sEIsj3fNge5lzYWx0'.
Я храню эту строку в своей базе данных пользователей.Когда пользователь входит в систему, необходимо отделить соль от хэша, чтобы хэшировать предоставленный пароль с солью и сравнить результат с полученным из БД.Вот где я застрял.У меня, кажется, нет правильного шаблона распаковки, отделяющего хеш (8-разрядный двоичный файл, фиксированная длина, в данном случае 32 байта) от соли (8-разрядный двоичный файл, переменная длина).
У меня естьпопробовал что-то вроде
my ($hash, $salt) = unpack('N32 N*', $data);
, но, похоже, это не сработало.
Мой вопрос: как мне распаковать этот хэш (после того, как он был декодирован в Base64), чтобы получить исправленныйдлина хеша в одной переменной и соль длины в другой переменной?