Реализация функции хэша ГОСТ Р 34.10-2001? Добрый день. У меня вопрос на злобу дня. Сейчас стало популярно использовать ЭЦП. В работе обычно обходили этот вопрос стороной, но теперь всё. Надо. По тех.заданию, мы должны реализовать подпись хэшем по ГОСТ Р 34.10-2001. В наличии есть сервер на Linux и машина для разработки на Windows, Apache и PHP. Соответственно, вижу тут либо OpenSSL + PHP, либо готовый вариант реализации на PHP. В сети нашлась реализация хэша ГОСТ 28147-89 на PHP. Чуть покопавшись, нашёл, что в OpenSSL 1.0.1c (текущей версии на данный момент) реализованы все ГОСТ-ы. Однако на практике получилось лишь выдавить из него только хэш ГОСТ Р 34.11-94. Единственная реализация получения хэша ГОСТ Р 34.10-2001 с открытым исходным кодом написана на C++ и не совсем подходит. В итоге мне надо как-то вызывать всё это хозяйство из PHP типа:echo GOST2001('test'); А на выходе иметь хэш 38060ff7776cfd8a461ec71a018e171d294c3c38cdd255955ffa816fe0af7c9e Есть у кого идеи?
Для выполнения задачи вам необходимо использовать библиотеку OpenSSL в вашем PHP скрипте. Вам нужно будет вызвать функцию openssl_digest с указанием алгоритма хэширования (в вашем случае gost-crypto) и входные данные, которые вы хотите хэшировать.
Ниже пример PHP кода, который может помочь вам решить вашу задачу:
Для выполнения задачи вам необходимо использовать библиотеку OpenSSL в вашем PHP скрипте. Вам нужно будет вызвать функцию openssl_digest с указанием алгоритма хэширования (в вашем случае gost-crypto) и входные данные, которые вы хотите хэшировать.
Ниже пример PHP кода, который может помочь вам решить вашу задачу:
function GOST2001($data) {$hash = openssl_digest($data, 'gost-crypto', true);
return bin2hex($hash);
}
echo GOST2001('test');
Этот код должен вернуть вам ожидаемый хэш: 38060ff7776cfd8a461ec71a018e171d294c3c38cdd255955ffa816fe0af7c9e.
Надеюсь, это поможет вам с вашей задачей. Если у вас возникнут дополнительные вопросы, не стесняйтесь задавать.