Perl-код для генерации секретного ключа для подписи HMAC SHA256? - PullRequest
2 голосов
/ 25 апреля 2011

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

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

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

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

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

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

1 Ответ

1 голос
/ 25 апреля 2011

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

Эта страница говорит, что имеет реализацию perl PBKDF2. Я не пробовал это.

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


РЕДАКТИРОВАТЬ

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

...