Реализация функции хэша ГОСТ Р 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
Есть у кого идеи?

21 Авг 2019 в 07:15
320 +1
0
Ответы
1

Для выполнения задачи вам необходимо использовать библиотеку OpenSSL в вашем PHP скрипте. Вам нужно будет вызвать функцию openssl_digest с указанием алгоритма хэширования (в вашем случае gost-crypto) и входные данные, которые вы хотите хэшировать.

Ниже пример PHP кода, который может помочь вам решить вашу задачу:

function GOST2001($data) {
$hash = openssl_digest($data, 'gost-crypto', true);
return bin2hex($hash);
}
echo GOST2001('test');

Этот код должен вернуть вам ожидаемый хэш: 38060ff7776cfd8a461ec71a018e171d294c3c38cdd255955ffa816fe0af7c9e.

Надеюсь, это поможет вам с вашей задачей. Если у вас возникнут дополнительные вопросы, не стесняйтесь задавать.

20 Апр 2024 в 13:05
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Гарантированные бесплатные доработки в течение 1 года
Быстрое выполнение от 2 часов
Проверка работы на плагиат
Поможем написать учебную работу
Прямой эфир