Код Perl для генерации секретного ключа для подписи HMAC SHA256?

#perl #hmac #sha256 #secret-key

#perl #hmac #sha256 #секретный ключ

Вопрос:

Я планирую использовать код, похожий на образцы Amazon AWS, для аутентификации подписанных запросов API. Таким образом, пользователи будут иметь что-то вроде:

 use Digest::SHA qw(hmac_sha256_base64);
my $digest = hmac_sha256_base64 ($request, $self->{SecretKey});
  

и прикрепите $digest в качестве параметра к их URI запроса. Серверная часть будет использовать тот же алгоритм для создания дайджеста из URI клиента и сравнения его со значением, отправленным клиентом.

Чего я не могу найти, так это поддержки Perl для генерации секретного ключа правильной длины для использования при генерации дайджеста HMAC SHA256.

Для моей учетной записи Amazon AWS мне предоставляется строка в кодировке base64 из 40 символов ASCII.

Как мне сгенерировать правильный секретный ключ для моих клиентов?

Ответ №1:

Я предлагаю вам использовать алгоритм PBKDF2. PBKDF2 = «Функция получения ключа на основе пароля (# 2)». Он определен в PKCS #5 (RFC 2898). Это рекомендуемый способ получения ключа из пароля. Вам также понадобится соль. Типичное количество итераций равно 1000.

На этой странице говорится, что у нее есть реализация PBKDF2 на perl. Я не пробовал.

По-видимому, также существует Crypto::PBKDF2 , но он обременен зависимостями, которые вам могут не понадобиться.


Редактировать

Я только что попробовал программу Энтони Тиссена на perl для pbkdf2 — она отлично работает. Просто, изи.

Комментарии:

1. Спасибо. Я полагаю, вы имеете в виду ict.griffith.edu.au/anthony/software/pbkdf2.pl но чего у меня нет, так это $ password. Я хочу сгенерировать уникальный общий секретный ключ для данного пользовательского ключа доступа (который я уже раздал. Для входа в API не требуется логин. Итак, мне просто создать случайный внутренний «пароль», который будет использоваться в качестве моего ввода в pbkdf2?