ГОСТ Р 34.11-94: различия между версиями

2084 байта добавлено ,  10 лет назад
→‎Параметры алгоритма: Параграф: Формат вывода
(→‎Параметры алгоритма: Параграф: Формат вывода)
H<sub>1</sub>=0x00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000.
 
ПараметрамиПараметром используемого в качестве шифрующего преобразования <math>E(h, K)</math> алгоритма [[ГОСТ 28147-89]] является таблица из восьми узлов замены (S-блоков).
 
=== «Тестовый» набор S-блоков ===
В «приложении А» стандарта<ref name="gostAppA">
В «приложении А» стандарта приводятся тестовые параметры, с рекомендацией использовать их только в указанных проверочных примерах. Тем не менее, они получили большое распространение. Например, их использует ЦБ РФ.<ref>{{Книга:Шнайер Б.: Прикладная криптография|часть=14.1 ГОСТ|страницы=373-377}}</ref>
{{cite web
| author =
| datepublished = 23 May 1994
| url = http://protect.gost.ru/document.aspx?control=7&id=134550
| title = ГОСТ Р 34.11-94
| at = ПРИЛОЖЕНИЕ А
| lang = ru
| accessdate = 28 октября 2010
В «приложении А» стандарта }}</ref> приводятся тестовые параметры, с рекомендацией использовать их только в указанных проверочных примерах. Тем не менее, они получили большое распространение. Например, их использует ЦБ РФ.<ref>{{Книга:Шнайер Б.: Прикладная криптография|часть=14.1 ГОСТ|страницы=373-377}}</ref>
 
{| class="standard"
 
=== Набор S-блоков компании CryptoPro ===
Российская компания CryptoPro написала информационный RFC 4357. Согласно ему реализации ГОСТ Р 34.11-94 должны использовать набор S-блоков разработанный этой компанией. В известной открытой библиотеке OpenSSL начиная с версии 1.0.0 в качестве плагина появилась хэш функция ГОСТ Р 34.11-94 (пока в качестве плагина) именно с этими параметрами.
{| class="standard"
!Номер S-box
|11|| 10|| 8|| 9|| 3|| 12|| 9|| 2|| 15|| 8|| 13|| 3|| 5|| 3|| 11|| 12
|}
== Формат вывода ==
Согласно ГОСТ стандарту, результатом хэш-функции является 256-битное число.
Стандарт не указывает, как оно должно выводиться.
Разные реализации используют различные форматы вывода, что вкупе с двумя распространёнными S-Box'ми усиливает путанницу.
 
Из используемых в стандарте примеров<ref name="gostAppA"/> видно, что алгоритм оперирует с [[Little-endian]] числами.
Многие реализации (в частности rhash, mhash library) выводят результирующий хэш —
256-битного число, как сплошную строку из 32-байт в том порядке,
как он располагается в памяти, младшие байты первыми:
GOST("This is message, length=32 bytes") = B1C466D37519B82E8319819FF32595E047A28CB6F83EFF1C6916A815A637FFFA
Данное представление оправдывается тем, что оно же используется при выводе
хэшей широко распространённых западных алгоритмов [[MD5]], [[SHA1]], [[Tiger]], [[Whirlpool]] и др.
 
В приведённых в стандарте примерах<ref name="gostAppA"/>,
результирующий хэш записывается, как шестнадцатеричное представление 256-битного числа.
В результате порядок байт получается обратный:
H = FAFF37A6 15A81669 1CFF3EF8 B68CA247 E09525F3 9F811983 2EB81975 D366C4B1
 
== Подробный пример из описания стандарта ==