Я понимаю, что это не совсем то, что вы просите, но нет смысла заново изобретать колесо и писать версию bash.
Вы можете просто использовать openssl
команда для генерации хеша в вашем скрипте.
[me@home] echo -n "value" | openssl dgst -sha1 -hmac "key"
57443a4c052350a44638835d64fd66822f813319
Или просто:
[me@home] echo -n "value" | openssl sha1 -hmac "key"
57443a4c052350a44638835d64fd66822f813319
Не забудьте использовать -n
с echo
, иначе к символу разрыва строки добавляетсястрока, которая изменяет ваши данные и хэш.
Эта команда происходит из пакета OpenSSL, который уже должен быть установлен (или легко установлен) в выбранном вами Linux / Unix, Cygwin и т. п.
Обратите внимание, что более старые версии openssl
(например, поставляемые с RHEL4) могут не предоставлять опцию -hmac
.
В качестве альтернативного решения, но главным образом для доказательства того, что результатыто же самое, мы также можем вызвать PHP hmac_sha1()
из командной строки:
[me@home]$ echo '<?= hash_hmac("sha1", "value", "key") ?>' | php
57443a4c052350a44638835d64fd66822f813319