Реализация функции хэша ГОСТ Р 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


Есть у кого идеи?
  • Вопрос задан
  • 12346 просмотров
Пригласить эксперта
Ответы на вопрос 2
sl_bug
@sl_bug
собираем и настраиваем openssl как написано тут — cvs.openssl.org/fileview?f=openssl/engines/ccgost/README.gost&r=HEAD

$ openssl genpkey -algorithm gost2001 -pkeyopt paramset:A -out seckey.pem

$ cat seckey.pem 
-----BEGIN PRIVATE KEY-----
MEYCAQAwHAYGKoUDAgITMBIGByqFAwICIwEGByqFAwICHgEEIwIhAJ+m75X82GvN
kzuffIZaw8/L4VZdYtb1GHDekFQSFWWz
-----END PRIVATE KEY-----


Ответ написан
@IOFeed
В PHP есть нативная поддержка начиная с версии 5.6.0:
php.net/manual/ru/function.hash-algos.php
Добавлена поддержка для gost-crypto. Реализуется функция GOST хэш, использующая CryptoPro S-box таблицы, согласно » RFC 4357, секция 11.2.

Например:
echo hash('gost-crypto','test');
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы