---
title: "\"ГОСТ Р 34.11-2012. Национальный стандарт Российской Федерации. Информационная технология. Криптографическая защита информации. Функция хэширования\""
number: "ГОСТ Р 34.11-2012"
issuer: "Федеральное агентство по техническому регулированию и метрологии"
status: действует
canonical: "https://bukva.ai/docs/gost-r-34-11-2012"
---

## "ГОСТ Р 34.11-2012. Национальный стандарт Российской Федерации. Информационная технология. Криптографическая защита информации. Функция хэширования"

# "ГОСТ Р 34.11-2012. Национальный стандарт Российской Федерации. Информационная технология. Криптографическая защита информации. Функция хэширования"

(утв. и введен в действие Приказом Росстандарта от 07.08.2012 N 216-ст)

> [!IMPORTANT]
> Текст данного документа приведен с учетом [поправки](https://bukva.ai/docs/popravka-popravki-gost-r-34-11-2012), опубликованной в "ИУС", N 6, 2018.
> Документ [введен](#p100011) в действие с 1 января 2013 года.
> Взамен [ГОСТ Р 34.11-94](https://bukva.ai/docs/standart-154).

> [!NOTE]
> ИСТОРИЯ ИЗМЕНЕНИЙ НОРМАТИВНО-ТЕХНИЧЕСКИХ АКТОВ

```mermaid
flowchart LR
  n0["ГОСТ Р 34.11-94"]:::rst
  click n0 "https://bukva.ai/docs/standart-154" "ГОСТ Р 34.11-94. Государственный стандарт Российской Федерации. Информационная технология. Криптографическая защита информации. Функция хэширования (принят и введен в действие Пост"
  n1["ГОСТ Р 34.11-2012"]:::doc
  click n1 "https://bukva.ai/docs/gost-r-34-11-2012" "ГОСТ Р 34.11-2012. Национальный стандарт Российской Федерации. Информационная технология. Криптографическая защита информации. Функция хэширования (утв. и введен в действие Приказо"
  n0 --> n1
classDef rst fill:#FFEBEB,stroke:#8B0000,color:#000;
classDef doc fill:#EBFFEB,stroke:#006400,color:#000;
classDef notEnt fill:#FFFFEB,stroke:#FF8C00,color:#000;
```


<div align="right">

<a id="p100001"></a>Утвержден и введен в действие<br>
Приказом Федерального агентства<br>
по техническому регулированию<br>
и метрологии<br>
от 7 августа 2012 г. N 216-ст

</div>


<a id="p100002"></a>**НАЦИОНАЛЬНЫЙ СТАНДАРТ РОССИЙСКОЙ ФЕДЕРАЦИИ**

<a id="p100003"></a>**ИНФОРМАЦИОННАЯ ТЕХНОЛОГИЯ**

<a id="p100004"></a>**КРИПТОГРАФИЧЕСКАЯ ЗАЩИТА ИНФОРМАЦИИ**

<a id="p100005"></a>**ФУНКЦИЯ ХЭШИРОВАНИЯ**

<a id="p100006"></a>Information technology. Cryptographic data security.
Hash-function

<div align="center">

<a id="p100007"></a>**ГОСТ Р 34.11-2012**

</div>


<div align="right">

<a id="p100008"></a>Группа П85

<a id="p100009"></a>ОКС 35.040

<a id="p100010"></a>ОКСТУ 5002

<a id="p100011"></a>Дата введения<br>
1 января 2013 года

</div>



### <a id="p100012"></a>Предисловие


<a id="p100013"></a>Цели и принципы стандартизации в Российской Федерации установлены Федеральным законом от 27 декабря 2002 г. N 184-ФЗ "О техническом регулировании", а правила применения национальных стандартов Российской Федерации - ГОСТ Р 1.0-2004 "Стандартизация в Российской Федерации. Основные положения".


### <a id="p100014"></a>Сведения о стандарте


1. <a id="p100015"></a>Разработан Центром защиты информации и специальной связи ФСБ России с участием Открытого акционерного общества "Информационные технологии и коммуникационные системы" (ОАО "ИнфоТеКС").
2. <a id="p100016"></a>Внесен Техническим комитетом по стандартизации ТК 26 "Криптографическая защита информации".
3. <a id="p100017"></a>Утвержден и введен в действие Приказом Федерального агентства по техническому регулированию и метрологии от 7 августа 2012 г. N 216-ст.
4. <a id="p100018"></a>Взамен [ГОСТ Р 34.11-94](https://bukva.ai/docs/standart-154).

<a id="p100019"></a>Информация об изменениях к настоящему стандарту публикуется в ежегодно издаваемом информационном указателе "Национальные стандарты", а текст изменений и поправок - в ежемесячно издаваемых информационных указателях "Национальные стандарты". В случае пересмотра (замены) или отмены настоящего стандарта соответствующее уведомление будет опубликовано в ежемесячно издаваемом информационном указателе "Национальные стандарты". Соответствующая информация, уведомление и тексты размещаются также в информационной системе общего пользования - на официальном сайте Федерального агентства по техническому регулированию и метрологии в сети Интернет.


### <a id="p100020"></a>Введение


<a id="p100021"></a>Настоящий стандарт содержит описание алгоритма и процедуры вычисления хэш-функции для любой последовательности двоичных символов, которые применяются в криптографических методах защиты информации, в том числе в процессах формирования и проверки электронной цифровой подписи.
<a id="p100022"></a>Стандарт разработан взамен [ГОСТ Р 34.11-94](https://bukva.ai/docs/standart-154). Необходимость разработки настоящего стандарта вызвана потребностью в создании хэш-функции, соответствующей современным требованиям к криптографической стойкости и требованиям стандарта ГОСТ Р 34.10-2012 к электронной цифровой подписи.
<a id="p100023"></a>Настоящий стандарт терминологически и концептуально увязан с международными стандартами ИСО 2382-2 [[1]](#p100560), ИСО/МЭК 9796 [[2](#p100561) - [3](#p100562)], серии ИСО/МЭК 14888 [[4](#p100563) - [7](#p100566)] и серии ИСО/МЭК 10118 [[8](#p100567) - [11](#p100570)].
<a id="p100024"></a>*Примечание.* Основная часть стандарта дополнена одним приложением:
<a id="p100025"></a>[Приложение А](#p100246) (справочное). Контрольные примеры.


### 1. <a id="p100026"></a>ОБЛАСТЬ ПРИМЕНЕНИЯ


<a id="p100027"></a>Настоящий стандарт определяет алгоритм и процедуру вычисления хэш-функции для любой последовательности двоичных символов, которые применяются в криптографических методах обработки и защиты информации, в том числе для реализации процедур обеспечения целостности, аутентичности, электронной цифровой подписи (ЭЦП) при передаче, обработке и хранении информации в автоматизированных системах.
<a id="p100028"></a>Определенная в настоящем стандарте функция хэширования используется при реализации систем электронной цифровой подписи на базе асимметричного криптографического алгоритма по ГОСТ Р 34.10-2012.
<a id="p100029"></a>Стандарт рекомендуется использовать при создании, эксплуатации и модернизации систем обработки информации различного назначения.


### 2. <a id="p100030"></a>НОРМАТИВНЫЕ ССЫЛКИ


<a id="p100031"></a>В настоящем стандарте использованы нормативные ссылки на следующие стандарты:
<a id="p100032"></a>ГОСТ Р 34.10-2012 Информационная технология. Криптографическая защита информации. Процессы формирования и проверки электронной цифровой подписи
<a id="p100033"></a>*Примечание.* При пользовании настоящим стандартом целесообразно проверить действие ссылочных стандартов в информационной системе общего пользования - на официальном сайте Федерального агентства Российской Федерации по техническому регулированию и метрологии в сети Интернет или по ежегодно издаваемому информационному указателю "Национальные стандарты", который опубликован по состоянию на 1 января текущего года, и по соответствующим ежемесячно издаваемым информационным указателям, опубликованным в текущем году. Если ссылочный стандарт заменен (изменен), то при пользовании настоящим стандартом следует руководствоваться заменяющим (измененным) стандартом. Если ссылочный стандарт отменен без замены, то положение, в котором дана ссылка на него, применяется в части, не затрагивающей эту ссылку.


### 3. <a id="p100034"></a>ТЕРМИНЫ, ОПРЕДЕЛЕНИЯ И ОБОЗНАЧЕНИЯ


<a id="p100035"></a>В настоящем стандарте применены следующие термины с соответствующими определениями.

#### <a id="p100036"></a>3.1 Термины и определения

<a id="p100037"></a>3.1.1.


| <a id="p100038"></a>Заполнение (padding): приписывание дополнительных бит к строке бит. |
| --- |
| <a id="p100039"></a>[ИСО/МЭК 10118-1, статья 3.9] |


<a id="p100040"></a>3.1.2.


| <a id="p100041"></a>Инициализационный вектор (initializing value): вектор, определенный как начальная точка работы функции хэширования. |
| --- |
| <a id="p100042"></a>[ИСО/МЭК 10118-1, статья 3.7] |


<a id="p100043"></a>3.1.3.


| <a id="p100044"></a>Сообщение (message): строка бит произвольной конечной длины. |
| --- |
| <a id="p100045"></a>[ИСО/МЭК 14888-1, статья 3.10] |


<a id="p100046"></a>3.1.4.


| <a id="p100047"></a>Функция сжатия (round-function): итеративно используемая функция, преобразующая строку бит длиной $L_{1}$ и полученную на предыдущем шаге строку бит длиной $L_{2}$ в строку бит длиной $L_{2}$ . |
| --- |
| <a id="p100048"></a>[ИСО/МЭК 10118-1, статья 3.10] |


<a id="p100049"></a>*Примечание.* В настоящем стандарте понятия "строка бит длиной L" и "двоичный вектор-строка размерности L" считаются тождественными.

<a id="p100050"></a>3.1.5.


| <a id="p100051"></a>Хэш-код (hash-code): строка бит, являющаяся выходным результатом хэш-функции. |
| --- |
| <a id="p100052"></a>[ИСО/МЭК 14888-1, статья 3.6] |


<div align="center">

<a id="p100053"></a>3.1.6.

</div>



| <a id="p100054"></a>Хэш-функция (collision-resistant hash-function): функция, отображающая строки бит в строки бит фиксированной длины и удовлетворяющая следующим свойствам: |
| --- |
| <a id="p100055"></a>1) по данному значению функции сложно вычислить исходные данные, отображаемые в это значение; |
| <a id="p100056"></a>2) для заданных исходных данных сложно вычислить другие исходные данные, отображаемые в то же значение функции; |
| <a id="p100057"></a>3) сложно вычислить какую-либо пару исходных данных, отображаемых в одно и то же значение. |
| <a id="p100058"></a>[ИСО/МЭК 14888-1, статьи 3.2, 3.7] |


<a id="p100059"></a>*Примечание.* В настоящем стандарте в целях сохранения терминологической преемственности по отношению к действующим отечественным нормативным документам и опубликованным научно-техническим изданиям установлено, что термины "хэш-функция", "криптографическая хэш-функция", "функция хэширования" и "криптографическая функция хэширования" являются синонимами.

<div align="center">

<a id="p100060"></a>3.1.7.

</div>



| <a id="p100061"></a>Электронная цифровая подпись (signature); ЭЦП: строка бит, полученная в результате процесса формирования подписи. |
| --- |
| <a id="p100062"></a>[ИСО/МЭК 14888-1, статья 3.12] |


<a id="p100063"></a>*Примечание.* В настоящем стандарте в целях сохранения терминологической преемственности по отношению к действующим отечественным нормативным документам и опубликованным научно-техническим изданиям установлено, что термины "электронная подпись", "цифровая подпись" и "электронная цифровая подпись" являются синонимами.


#### <a id="p100064"></a>3.2 Обозначения

<a id="p100065"></a>В настоящем стандарте используются следующие обозначения:


| <a id="p100066"></a>$V^{*}$ | <a id="p100067"></a>множество всех двоичных векторов-строк конечной размерности (далее - векторы), включая пустую строку; |
| --- | --- |
| <a id="p100068"></a>\|A\| | <a id="p100069"></a>размерность (число компонент) вектора $A \in V^{*}$ (если A - пустая строка, то \|A\| = 0); |
| <a id="p100070"></a>$V_{n}$ | <a id="p100071"></a>множество всех n-мерных двоичных векторов, где n - целое неотрицательное число; нумерация подвекторов и компонент вектора осуществляется справа налево, начиная с нуля; |
| <a id="p100072"></a>![формула](https://i.bukva.ai/3rbxVDUb/img_0.png) | <a id="p100073"></a>операция покомпонентного сложения по модулю 2 двух двоичных векторов одинаковой размерности; |
| <a id="p100074"></a>A\|\|B | <a id="p100075"></a>конкатенация векторов A, $B \in V^{*}$ , т.е. вектор из $V_{\|A\| + \|B\|}$ в котором левый подвектор из $V_{\|A\|}$ совпадает с вектором A, а правый подвектор из $V_{\|B\|}$ совпадает с вектором B; |
| <a id="p100076"></a>$A^{n}$ | <a id="p100077"></a>конкатенация n экземпляров вектора A; |
| <a id="p100078"></a>$\mathbb{Z}_{2^{n}}$ | <a id="p100079"></a>кольцо вычетов по модулю $2^{n}$ ; |
| <a id="p100080"></a>![формула](https://i.bukva.ai/3rbxVDUb/img_1.png) | <a id="p100081"></a>операция сложения в кольце $\mathbb{Z}_{2^{n}}$ ; |
| <a id="p100082"></a>$Vec_{n}:\mathbb{Z}_{2^{n}} \rightarrow V_{n}$ | <a id="p100083"></a>биективное отображение, сопоставляющее элементу кольца $\mathbb{Z}_{2^{n}}$ его двоичное представление, т.е. для любого элемента z кольца $\mathbb{Z}_{2^{n}}$ , представленного вычетом $z_{0} + 2z_{1} + ... + 2^{n - 1}z_{n - 1}$ , где ${}_{z_{i} \in}{_{0,1}}$ , j = 0, ..., n - 1, выполнено равенство $Vec_{n}(z) = z_{n - 1}\|\|...\|\|z_{1}\|\|z_{0}$ ; |
| <a id="p100084"></a>$Int_{n}:V_{n} \rightarrow \mathbb{Z}_{2^{n}}$ | <a id="p100085"></a>отображение, обратное отображению $Vec_{n}$ , т.е. $Int_{n} = Vec_{n}^{- 1}$ ; |
| <a id="p100086"></a>$MSB_{n}:V^{*} \rightarrow V_{n}$ | <a id="p100087"></a>отображение, ставящее в соответствие вектору $z_{k - 1}\|\|...\|\|z_{1}\|\|z_{0}$ , k >= n, вектор $z_{k - 1}\|\|...\|\|z_{k - n + 1}\|\|z_{k - n}$ ; |
| <a id="p100088"></a>a: = b | <a id="p100089"></a>операция присваивания переменной a значения b; |
| <a id="p100090"></a>$\Phi\Psi$ | <a id="p100091"></a>произведение отображений, при котором отображение $\Psi$ действует первым; |
| <a id="p100092"></a>M | <a id="p100093"></a>двоичный вектор, подлежащий хэшированию, $M \in V^{*}$ , $\|M\|<2^{512}$ ; |
| <a id="p100094"></a>$H:V^{*} \rightarrow V_{n}$ | <a id="p100095"></a>функция хэширования, отображающая вектор (сообщение) M в вектор (хэш-код) H(M); |
| <a id="p100096"></a>IV | <a id="p100097"></a>инициализационный вектор функции хэширования, $IV \in V_{512}$ . |



### 4. <a id="p100098"></a>ОБЩИЕ ПОЛОЖЕНИЯ


<div align="center">

<a id="p100099"></a>Настоящий стандарт определяет две функции хэширования $H:V^{*} \rightarrow V_{n}$ с длинами хэш-кода n = 512 бит и n = 256 бит.

</div>



### 5. <a id="p100100"></a>ЗНАЧЕНИЯ ПАРАМЕТРОВ



#### <a id="p100101"></a>5.1 Инициализационные векторы

<div align="center">

<a id="p100102"></a>Значение инициализационного вектора IV для функции хэширования с длиной хэш-кода 512 бит равно $0^{512}$ . Значение инициализационного вектора IV для функции хэширования с длиной хэш-кода 256 бит равно $(00000001)^{64}$ .

</div>


#### <a id="p100103"></a>5.2 Нелинейное биективное преобразование множества двоичных векторов

<div align="center">

<a id="p100104"></a>Нелинейное биективное преобразование множества двоичных векторов $V_{8}$ задается подстановкой

<a id="p100105"></a> $\pi = Vec_{8}\pi'Int_{8}:V_{8} \rightarrow V_{8},(1)$ 

</div>


<a id="p100106"></a>где $\pi':\mathbb{Z}_{2^{8}} \rightarrow \mathbb{Z}_{2^{8}}$ .

<div align="center">

<a id="p100107"></a>Значения подстановки $\pi'$ записаны ниже в виде массива $\pi' = (\pi'(0),\pi'(1),...,\pi'(255))$ :

</div>


<a id="p100108"></a> ![5. Значения параметров](https://i.bukva.ai/3rbxVDUb/img_2.png) 


#### <a id="p100109"></a>5.3 Перестановка байт

<a id="p100110"></a>Значения перестановки $\tau$ , заданной на множестве {0, ..., 63}, записаны ниже в виде массива $\tau = (\tau(0),\tau(1),...,\tau(63))$ :

<div align="center">

<a id="p100111"></a> ![формула](https://i.bukva.ai/3rbxVDUb/img_3.png) 

</div>



#### <a id="p100112"></a>5.4 Линейное преобразование множества двоичных векторов

<a id="p100113"></a>Линейное преобразование l множества двоичных векторов $V_{64}$ задается умножением справа на матрицу A над полем GF(2), строки которой записаны ниже последовательно в шестнадцатеричном виде. Строка матрицы с номером j, j = 0, ..., 63, записанная в виде $a_{j,15}...a_{j,0}$ , где $a_{j,i} \in \mathbb{Z}_{16}$ , i = 0, ..., 15, есть $Vec_{4}(a_{j,15})||...||Vec_{4}(a_{j,0})$ .


| <a id="p100114"></a>8e20faa72ba0b470 | <a id="p100115"></a>47107ddd9b505a38 | <a id="p100116"></a>ad08b0e0c3282d1c | <a id="p100117"></a>d8045870ef14980e |
| --- | --- | --- | --- |
| <a id="p100118"></a>6c022c38f90a4c07 | <a id="p100119"></a>3601161cf205268d | <a id="p100120"></a>1b8е0b0е798с13c8 | <a id="p100121"></a>83478b07b2468764 |
| <a id="p100122"></a>a011d380818e8f40 | <a id="p100123"></a>5086e740ce47c920 | <a id="p100124"></a>2843fd2067adea10 | <a id="p100125"></a>14aff010bdd87508 |
| <a id="p100126"></a>0ad97808d06cb404 | <a id="p100127"></a>05e23c0468365a02 | <a id="p100128"></a>8c711e02341b2d01 | <a id="p100129"></a>46b60f011a83988e |
| <a id="p100130"></a>90dab52a387ae76f | <a id="p100131"></a>486dd4151c3dfdb9 | <a id="p100132"></a>24b86a840e90f0d2 | <a id="p100133"></a>125c354207487869 |
| <a id="p100134"></a>092e94218d243cba | <a id="p100135"></a>8a174a9ec8121e5d | <a id="p100136"></a>4585254f64090fa0 | <a id="p100137"></a>accc9ca9328a8950 |
| <a id="p100138"></a>9d4df05d5f661451 | <a id="p100139"></a>c0a878a0a1330aa6 | <a id="p100140"></a>60543c50de970553 | <a id="p100141"></a>302a1e286fc58ca7 |
| <a id="p100142"></a>18150f14b9ec46dd | <a id="p100143"></a>0c84890ad27623e0 | <a id="p100144"></a>0642ca05693b9f70 | <a id="p100145"></a>0321658cba93c138 |
| <a id="p100146"></a>86275df09ce8aaa8 | <a id="p100147"></a>439da0784e745554 | <a id="p100148"></a>afc0503c273aa42a | <a id="p100149"></a>d960281e9d1d5215 |
| <a id="p100150"></a>e230140fc0802984 | <a id="p100151"></a>71180a8960409a42 | <a id="p100152"></a>b60c05ca30204d21 | <a id="p100153"></a>5b068c651810a89e |
| <a id="p100154"></a>456c34887a3805b9 | <a id="p100155"></a>ac361a443d1c8cd2 | <a id="p100156"></a>561b0d22900e4669 | <a id="p100157"></a>2b838811480723ba |
| <a id="p100158"></a>9bcf4486248d9f5d | <a id="p100159"></a>c3e9224312c8c1a0 | <a id="p100160"></a>effa11af0964ee50 | <a id="p100161"></a>f97d86d98a327728 |
| <a id="p100162"></a>e4fa2054a80b329c | <a id="p100163"></a>727d102a548b194e | <a id="p100164"></a>39b008152acb8227 | <a id="p100165"></a>9258048415eb419d |
| <a id="p100166"></a>492c024284fbaec0 | <a id="p100167"></a>aa16012142f35760 | <a id="p100168"></a>550b8e9e21f7a530 | <a id="p100169"></a>a48b474f9ef5dc18 |
| <a id="p100170"></a>70a6a56e2440598e | <a id="p100171"></a>3853dc371220a247 | <a id="p100172"></a>1ca76e95091051ad | <a id="p100173"></a>0edd37c48a08a6d8 |
| <a id="p100174"></a>07e095624504536c | <a id="p100175"></a>8d70c431ac02a736 | <a id="p100176"></a>c83862965601dd1b | <a id="p100177"></a>641c314b2b8ee083 |


<a id="p100178"></a>Здесь в одной строке записаны четыре строки матрицы A, при этом в строке с номером i, i = 0, ..., 15, записаны строки матрицы A с номерами 4i + j, j = 0, ..., 3, в следующем порядке (слева направо):

<div align="center">

<a id="p100179"></a>4i + 0,4i + 1,4i + 2,4i + 3.

</div>


<a id="p100180"></a>Результат умножения вектора $b = b_{63}...b_{0} \in V_{64}$ на матрицу A есть вектор $c \in V_{64}$ :

<a id="p100181"></a> $c = b_{63}(Vec_{4}(a_{0,15})||...||Vec_{4}(a_{0,0}))...b_{0}(Vec_{4}(a_{63,15})||...||Vec_{4}(a_{63,0})),(2)$ 

<div align="center">

<a id="p100182"></a>где ![формула](https://i.bukva.ai/3rbxVDUb/img_4.png) 

</div>

<a id="p100183"></a>для всех i = 0, ..., 63.

#### <a id="p100184"></a>5.5 Итерационные константы

<a id="p100185"></a>Итерационные константы записаны в шестнадцатеричном виде. Значение константы, записанное в виде $a_{127}...a_{0}$ , где $a_{i} \in \mathbb{Z}_{16}$ , i = 0, ..., 127, есть $Vec_{4}(a_{127})||...||Vec_{4}(a_{0})$ :

<a id="p100186"></a> ![формула](https://i.bukva.ai/3rbxVDUb/img_5.png) 

<a id="p100187"></a> ![формула](https://i.bukva.ai/3rbxVDUb/img_6.png) 

<a id="p100188"></a> ![формула](https://i.bukva.ai/3rbxVDUb/img_7.png) 

<a id="p100189"></a> ![формула](https://i.bukva.ai/3rbxVDUb/img_8.png) 

<a id="p100190"></a> ![формула](https://i.bukva.ai/3rbxVDUb/img_9.png) 

<a id="p100191"></a> ![формула](https://i.bukva.ai/3rbxVDUb/img_10.png) 

<a id="p100192"></a> ![формула](https://i.bukva.ai/3rbxVDUb/img_11.png) 

<a id="p100193"></a> ![формула](https://i.bukva.ai/3rbxVDUb/img_12.png) 

<a id="p100194"></a> ![формула](https://i.bukva.ai/3rbxVDUb/img_13.png) 

<div align="center">

<a id="p100195"></a> ![формула](https://i.bukva.ai/3rbxVDUb/img_14.png) 

<a id="p100196"></a> ![формула](https://i.bukva.ai/3rbxVDUb/img_15.png) 

<a id="p100197"></a> ![формула](https://i.bukva.ai/3rbxVDUb/img_16.png) 

</div>



### 6. <a id="p100198"></a>ПРЕОБРАЗОВАНИЯ


<a id="p100199"></a>При вычислении хэш-кода H(M) сообщения $M \in V^{*}$ используются следующие преобразования:

<div align="center">

<a id="p100200"></a> $X[k]:V_{512} \rightarrow V_{512}$ , $X[k](\text{а}) = ka$ , k, $a \in V_{512};(3)$ 

<a id="p100201"></a> $S:V_{512} \rightarrow V_{512}$ , $S(a) = S(a_{63}||...||a_{0}) = \pi(a_{63}||...||\pi(a_{0}),(4)$ 

</div>


<a id="p100202"></a>где $a = a_{63}||...||a_{0} \in V_{512}$ , $a_{i} \in V_{8}$ , i = 0, ..., 63;

<a id="p100203"></a> $P:V_{512} \rightarrow V_{512}$ , $P(a) = P(a_{63}||...||a_{0}) = a_{\tau(63)}||...||a_{\tau(0)},(5)$ 

<div align="center">

<a id="p100204"></a>где $a = a_{63}||...||a_{0} \in V_{512}$ , $a_{i} \in V_{8}$ , i = 0, ..., 63;

</div>


<a id="p100205"></a> $L:V_{512} \rightarrow V_{512}$ , $L(a) = L(a_{7}||...||a_{0}) = l(a_{7})||...||l(a_{0}),(6)$ 

<a id="p100206"></a>где $a = a_{7}||...||a_{0} \in V_{512}$ , $a_{i} \in V_{64}$ , i = 0, ..., 7.


### 7. <a id="p100207"></a>ФУНКЦИЯ СЖАТИЯ


<a id="p100208"></a>Значение хэш-кода сообщения $M \in V^{*}$ вычисляется с использованием итерационной процедуры. На каждой итерации вычисления хэш-кода используется функция сжатия:

<div align="center">

<a id="p100209"></a> $g_{N}:V_{512} \times V_{512} \rightarrow V_{512}$ , $N \in V_{512},(7)$ 

</div>


<a id="p100210"></a>значение которой вычисляется по формуле

<a id="p100211"></a> $g_{N}(h,m) = E(LSP(hN),m)hm,(8)$ 

<a id="p100212"></a>где $E(K,m) = X[K_{13}]LPSX[K_{12}]...LPSX[K_{2}]LPSX[K_{1}](m)$ .

<div align="center">

<a id="p100213"></a>Значения $K_{i} \in V_{512}$ , i = 1 , ..., 13, вычисляются следующим образом:

</div>


<a id="p100214"></a> $K_{1} = K;(9)$ 

<div align="center">

<a id="p100215"></a> $K_{1} = LPS(K_{i - 1}C_{i - 1})$ , i = 2, ..., 13. (10)

</div>


<a id="p100216"></a>Для краткости вместо $g_{0^{512}}$ будем использовать обозначение $g_{0}$ .


### 8. <a id="p100217"></a>ПРОЦЕДУРА ВЫЧИСЛЕНИЯ ХЭШ-ФУНКЦИИ


<a id="p100218"></a>Исходными данными для процедуры вычисления хэш-кода H(M) является подлежащее хэшированию сообщение $M \in V^{*}$ и $IV \in V_{512} - \text{инициализаторный вектор}$ .

<div align="center">

<a id="p100219"></a>Алгоритм вычисления функции H состоит из следующих этапов.

</div>


#### <a id="p100220"></a>8.1 Этап 1

<div align="center">

<a id="p100221"></a>Присвоить начальные значения текущих величин:

</div>

<a id="p100222"></a>1.1. h := IV,

<div align="center">

<a id="p100223"></a>1.2. $N: = 0^{512} \in V_{512}$ ;

</div>

<a id="p100224"></a>1.3. $\sum : = 0^{512} \in V_{512}$ ;

#### <a id="p100225"></a>1.4 Перейти к этапу 2.


#### <a id="p100226"></a>8.2 Этап 2


#### <a id="p100227"></a>2.1 Проверить условие |M| < 512.

<a id="p100228"></a>При положительном исходе перейти к этапу 3.
<a id="p100229"></a>В противном случае выполнить последовательность вычислений по 2.2 - [2.7](#p100235).

#### <a id="p100230"></a>2.2 Вычислить подвектор $m \in V_{512}$ сообщения M: M = M'||m. Далее выполнить последовательность вычислений:

<a id="p100231"></a>2.3. $h: = g_{N}(h,m)$ .

<div align="center">

<a id="p100232"></a>2.4. $N: = Vec_{512}(Int_{512}(N)(512)$ .

</div>

<a id="p100233"></a>2.5. $\sum : = Vec_{512}(Int_{512}(\sum)(Int_{512}(m))$ .

#### <a id="p100234"></a>2.6 M := M'.


#### <a id="p100235"></a>2.7 Перейти к шагу 2.1.


#### <a id="p100236"></a>8.3 Этап 3

<div align="center">

<a id="p100237"></a>3.1. $m: = 0^{511 - |M|}||1||M$ .

</div>

<a id="p100238"></a>3.2. $h:g_{N}(h,m)$ .
<a id="p100239"></a>3.3. $N: = Vec_{512}(Int_{512}(N)(|M|)$ .
<a id="p100240"></a>3.4. $\sum : = Vec_{512}(Int_{512}(\sum)(Int_{512}(m))$ .
<a id="p100241"></a>3.5. $h:g_{0}(h,N)$ .

<div align="center">

<a id="p100242"></a>3 6. ![формула](https://i.bukva.ai/3rbxVDUb/img_17.png) 

</div>


#### <a id="p100243"></a>3.7 Конец работы алгоритма

<a id="p100244"></a>Значение величины h, полученное на шаге 3.6, является значением функции хэширования H(M).





<a id="p100245"></a>Приложение А
(справочное)

<div align="center">

<a id="p100246"></a>**КОНТРОЛЬНЫЕ ПРИМЕРЫ**

</div>


<a id="p100247"></a>Данное Приложение носит справочный характер и не является частью настоящего стандарта.
<a id="p100248"></a>Векторы из $V^{*}$ записываются в шестнадцатеричном виде. Вектор $A \in V_{4n}$ , записанный в виде $a_{n - 1}...a_{0}$ , где $a_{i} \in \mathbb{Z}_{16}$ , i = 0, ..., n - 1, есть $Vec_{4}(a_{n - 1})||...||Vec_{4}(a_{0})$ .
<a id="p100249"></a>А.1. Пример 1

<div align="center">

<a id="p100250"></a>Необходимо вычислить хэш-код сообщения

</div>


<a id="p100251"></a> ![формула](https://i.bukva.ai/3rbxVDUb/img_18.png) 

<a id="p100252"></a>А.1.1. Для функции хэширования с длиной хэш-кода 512 бит

<div align="center">

<a id="p100253"></a>Присваиваются значения:

</div>


<a id="p100254"></a> $h: = IV = 0^{512};$ 

<a id="p100255"></a> $N: = 0^{512};$ 

<a id="p100256"></a> $\sum : = 0^{512}.$ 

<a id="p100257"></a>Длина сообщения $|M_{1}| = 504<512$ , поэтому происходит заполнение неполного блока:

<div align="center">

<a id="p100258"></a>m = 01323130393837363534333231303938373635343332313039383

</div>

73635343332313039383736353433323130393837363534333
2313039383736353433323130.

<a id="p100259"></a>Вычисляется значение $K: = LPS(hN) = LPS(0^{512})$ .

<div align="center">

<a id="p100260"></a>После преобразования S:

</div>


<a id="p100261"></a> ![формула](https://i.bukva.ai/3rbxVDUb/img_19.png) 

<a id="p100262"></a>после преобразования P:

<a id="p100263"></a> ![формула](https://i.bukva.ai/3rbxVDUb/img_20.png) 

<div align="center">

<a id="p100264"></a>после преобразования L:

</div>


<a id="p100265"></a> ![формула](https://i.bukva.ai/3rbxVDUb/img_21.png) 

<a id="p100266"></a>Затем выполняется преобразование E (K, m):

<div align="center">

<a id="p100267"></a>Итерация 1

</div>

<a id="p100268"></a> ![формула](https://i.bukva.ai/3rbxVDUb/img_22.png) 

<a id="p100269"></a> ![формула](https://i.bukva.ai/3rbxVDUb/img_23.png) 

<a id="p100270"></a> ![формула](https://i.bukva.ai/3rbxVDUb/img_24.png) 

<a id="p100271"></a> ![формула](https://i.bukva.ai/3rbxVDUb/img_25.png) 

<a id="p100272"></a> ![формула](https://i.bukva.ai/3rbxVDUb/img_26.png) 

<a id="p100273"></a> ![формула](https://i.bukva.ai/3rbxVDUb/img_27.png) 

<a id="p100274"></a> ![формула](https://i.bukva.ai/3rbxVDUb/img_28.png) 

<a id="p100275"></a> ![формула](https://i.bukva.ai/3rbxVDUb/img_29.png) 

<a id="p100276"></a> ![формула](https://i.bukva.ai/3rbxVDUb/img_30.png) 

<a id="p100277"></a>Итерация 2
<a id="p100278"></a> ![формула](https://i.bukva.ai/3rbxVDUb/img_31.png) 

<a id="p100279"></a> ![формула](https://i.bukva.ai/3rbxVDUb/img_32.png) 

<div align="center">

<a id="p100280"></a>Итерация 3

</div>

<a id="p100281"></a> ![формула](https://i.bukva.ai/3rbxVDUb/img_33.png) 

<a id="p100282"></a> ![формула](https://i.bukva.ai/3rbxVDUb/img_34.png) 

<a id="p100283"></a>Итерация 4
<a id="p100284"></a> ![формула](https://i.bukva.ai/3rbxVDUb/img_35.png) 

<div align="center">

<a id="p100285"></a> ![формула](https://i.bukva.ai/3rbxVDUb/img_36.png) 

<a id="p100286"></a>Итерация 5

</div>

<a id="p100287"></a> ![формула](https://i.bukva.ai/3rbxVDUb/img_37.png) 

<a id="p100288"></a> ![формула](https://i.bukva.ai/3rbxVDUb/img_38.png) 

<a id="p100289"></a>Итерация 6
<a id="p100290"></a> ![формула](https://i.bukva.ai/3rbxVDUb/img_39.png) 

<div align="center">

<a id="p100291"></a> ![формула](https://i.bukva.ai/3rbxVDUb/img_40.png) 

<a id="p100292"></a>Итерация 7

</div>

<a id="p100293"></a> ![формула](https://i.bukva.ai/3rbxVDUb/img_41.png) 

<a id="p100294"></a> ![формула](https://i.bukva.ai/3rbxVDUb/img_42.png) 

<a id="p100295"></a>Итерация 8
<a id="p100296"></a> ![формула](https://i.bukva.ai/3rbxVDUb/img_43.png) 

<div align="center">

<a id="p100297"></a> ![формула](https://i.bukva.ai/3rbxVDUb/img_44.png) 

<a id="p100298"></a>Итерация 9

</div>

<a id="p100299"></a> ![формула](https://i.bukva.ai/3rbxVDUb/img_45.png) 

<a id="p100300"></a> ![формула](https://i.bukva.ai/3rbxVDUb/img_46.png) 

<a id="p100301"></a>Итерация 10
<a id="p100302"></a> ![формула](https://i.bukva.ai/3rbxVDUb/img_47.png) 

<div align="center">

<a id="p100303"></a> ![формула](https://i.bukva.ai/3rbxVDUb/img_48.png) 

<a id="p100304"></a>Итерация 11

</div>

<a id="p100305"></a> ![формула](https://i.bukva.ai/3rbxVDUb/img_49.png) 

<a id="p100306"></a> ![формула](https://i.bukva.ai/3rbxVDUb/img_50.png) 

<a id="p100307"></a>Итерация 12
<a id="p100308"></a> ![формула](https://i.bukva.ai/3rbxVDUb/img_51.png) 

<a id="p100309"></a> ![формула](https://i.bukva.ai/3rbxVDUb/img_52.png) 

<a id="p100310"></a>Итерация 13
<a id="p100311"></a> ![формула](https://i.bukva.ai/3rbxVDUb/img_53.png) 

<a id="p100312"></a> ![формула](https://i.bukva.ai/3rbxVDUb/img_54.png) 

<div align="center">

<a id="p100313"></a>Результат выполнения преобразования $g_{N}(h,m)$ :

<a id="p100314"></a>h = fd102cf8812ccb1191ea34af21394f3817a86641445aa9a626488<br>
adb33738ebd2754f6908cbbbac5d3ed0f522c50815c954135793fb1f5

</div>

d905fee4736b3bdae2.

<a id="p100315"></a>Изменяются значения переменных N и $\sum$ :

<div align="center">

<a id="p100316"></a>N = 00000000000000000000000000000000000000000000000000000<br>
0000000000000000000000000000000000000000000000000000000

</div>

000000000000000001f8,

<a id="p100317"></a> ![формула](https://i.bukva.ai/3rbxVDUb/img_55.png) 
<a id="p100318"></a>Результат выполнения преобразования $g_{0}(h,N)$ :

<div align="center">

<a id="p100319"></a>h = 5c881fd924695cf196c2e4fec20d14b642026f2a0b1716<br>
ebaabb7067d4d597523d2db69d6d3794622147a14f19a66e7f9037e1d

</div>

662d34501a8901a5de7771d7c.

<div align="center">

<a id="p100320"></a>Результат выполнения преобразования $g_{0}(h, \sum)$ :

<a id="p100321"></a>h = 486f64c1917879417fef082b3381a4e211c324f074654c38823

</div>

a7b76f830ad00fa1fbae42b1285c0352f227524bc9ab16254288dd6863

<div align="center">

dccd5b9f54a1ad0541b.

<a id="p100322"></a>Хэш-кодом сообщения $M_{1}$ является значение

</div>


<a id="p100323"></a> ![формула](https://i.bukva.ai/3rbxVDUb/img_56.png) 

<a id="p100324"></a>А.1.2. Для функции хэширования с длиной хэш-кода 256 бит

<div align="center">

<a id="p100325"></a>Присваиваются значения:

<a id="p100326"></a> $h: = IV = (00000001)^{64};$ 

<a id="p100327"></a> $N: = 0^{512};$ 

<a id="p100328"></a> $\sum : = 0^{512}.$ 

<a id="p100329"></a>Длина сообщения $|M_{1}| = 504<512$ , поэтому происходит заполнение неполного блока:

<a id="p100330"></a>m: = 013231303938373635343332313039383736353433323130<br>
3938373635343332313039383736353433323130393837363534333<br>
2313039383736353433323130.

<a id="p100331"></a>Вычисляется значение $K: = LPS(hN) = LPS((00000001)^{64})$ .<br>
<a id="p100332"></a>После преобразования S:

</div>


<a id="p100333"></a> ![формула](https://i.bukva.ai/3rbxVDUb/img_57.png) 

<a id="p100334"></a>после преобразования P:

<div align="center">

<a id="p100335"></a> ![формула](https://i.bukva.ai/3rbxVDUb/img_58.png) 

<a id="p100336"></a>после преобразования L:

</div>


<a id="p100337"></a> ![формула](https://i.bukva.ai/3rbxVDUb/img_59.png) 

<div align="center">

<a id="p100338"></a>Затем выполняется преобразование E (K, m):<br>
<a id="p100339"></a>Итерация 1

</div>

<a id="p100340"></a> ![формула](https://i.bukva.ai/3rbxVDUb/img_60.png) 

<a id="p100341"></a> ![формула](https://i.bukva.ai/3rbxVDUb/img_61.png) 

<div align="center">

<a id="p100342"></a> ![формула](https://i.bukva.ai/3rbxVDUb/img_62.png) 

<a id="p100343"></a> ![формула](https://i.bukva.ai/3rbxVDUb/img_63.png) 

</div>


<a id="p100344"></a> ![формула](https://i.bukva.ai/3rbxVDUb/img_64.png) 

<a id="p100345"></a> ![формула](https://i.bukva.ai/3rbxVDUb/img_65.png) 

<a id="p100346"></a> ![формула](https://i.bukva.ai/3rbxVDUb/img_66.png) 

<a id="p100347"></a> ![формула](https://i.bukva.ai/3rbxVDUb/img_67.png) 

<div align="center">

<a id="p100348"></a> ![формула](https://i.bukva.ai/3rbxVDUb/img_68.png) 

<a id="p100349"></a>Итерация 2

</div>

<a id="p100350"></a> ![формула](https://i.bukva.ai/3rbxVDUb/img_69.png) 

<div align="center">

<a id="p100351"></a> ![формула](https://i.bukva.ai/3rbxVDUb/img_70.png) 

<a id="p100352"></a>Итерация 3

</div>

<a id="p100353"></a> ![формула](https://i.bukva.ai/3rbxVDUb/img_71.png) 

<div align="center">

<a id="p100354"></a> ![формула](https://i.bukva.ai/3rbxVDUb/img_72.png) 

<a id="p100355"></a>Итерация 4

</div>

<a id="p100356"></a> ![формула](https://i.bukva.ai/3rbxVDUb/img_73.png) 

<div align="center">

<a id="p100357"></a> ![формула](https://i.bukva.ai/3rbxVDUb/img_74.png) 

<a id="p100358"></a>Итерация 5

</div>

<a id="p100359"></a> ![формула](https://i.bukva.ai/3rbxVDUb/img_75.png) 

<div align="center">

<a id="p100360"></a> ![формула](https://i.bukva.ai/3rbxVDUb/img_76.png) 

<a id="p100361"></a>Итерация 6

</div>

<a id="p100362"></a> ![формула](https://i.bukva.ai/3rbxVDUb/img_77.png) 

<div align="center">

<a id="p100363"></a> ![формула](https://i.bukva.ai/3rbxVDUb/img_78.png) 

<a id="p100364"></a>Итерация 7

</div>

<a id="p100365"></a> ![формула](https://i.bukva.ai/3rbxVDUb/img_79.png) 

<div align="center">

<a id="p100366"></a> ![формула](https://i.bukva.ai/3rbxVDUb/img_80.png) 

<a id="p100367"></a>Итерация 8

</div>

<a id="p100368"></a> ![формула](https://i.bukva.ai/3rbxVDUb/img_81.png) 

<div align="center">

<a id="p100369"></a> ![формула](https://i.bukva.ai/3rbxVDUb/img_82.png) 

<a id="p100370"></a>Итерация 9

</div>

<a id="p100371"></a> ![формула](https://i.bukva.ai/3rbxVDUb/img_83.png) 

<div align="center">

<a id="p100372"></a> ![формула](https://i.bukva.ai/3rbxVDUb/img_84.png) 

<a id="p100373"></a>Итерация 10

</div>

<a id="p100374"></a> ![формула](https://i.bukva.ai/3rbxVDUb/img_85.png) 

<div align="center">

<a id="p100375"></a> ![формула](https://i.bukva.ai/3rbxVDUb/img_86.png) 

<a id="p100376"></a>Итерация 11

</div>

<a id="p100377"></a> ![формула](https://i.bukva.ai/3rbxVDUb/img_87.png) 

<a id="p100378"></a> ![формула](https://i.bukva.ai/3rbxVDUb/img_88.png) 

<a id="p100379"></a>Итерация 12
<a id="p100380"></a> ![формула](https://i.bukva.ai/3rbxVDUb/img_89.png) 

<div align="center">

<a id="p100381"></a> ![формула](https://i.bukva.ai/3rbxVDUb/img_90.png) 

<a id="p100382"></a>Итерация 13

</div>

<a id="p100383"></a> ![формула](https://i.bukva.ai/3rbxVDUb/img_91.png) 

<a id="p100384"></a> ![формула](https://i.bukva.ai/3rbxVDUb/img_92.png) 

<a id="p100385"></a>Результат выполнения преобразования $g_{N}(h,m)$ :

<div align="center">

<a id="p100386"></a>h = e3bbadbf78af3264c9137127608aa510de90ba4d3075665844965<br>
fb611dbb1998d48552a0c0ce6bcba71bc802a4f5b2d2a07b12c22e

</div>

25794178570341096fdc7.

<a id="p100387"></a>Изменяются значения переменных N и $\sum$ :

<div align="center">

<a id="p100388"></a>N = 0000000000000000000000000000000000000000000000000000<br>
00000000000000000000000000000000000000000000000000000000<br>
000000000000000001f8,

</div>


<a id="p100389"></a> ![формула](https://i.bukva.ai/3rbxVDUb/img_93.png) 

<a id="p100390"></a>Результат выполнения преобразования $g_{0}(h,N)$ :

<a id="p100391"></a>h = 70f22bada4cfe18a6a56ec4b3f328cd40db8e1bf8a9d5f711d5
efab11191279d715aab7648d07eddbf87dc79c80516e6ffcbcf5678
b0ac29ea00fa85c8173cc6.

<a id="p100392"></a>Результат выполнения преобразования $g_{0}(h, \sum)$ :

<a id="p100393"></a>h = 00557be5e584fd52a449b16b0251d05d27f94ab76cbaa6da890b59
d8ef1e159d2088e482e2acf564e0e9795a51e4dd261f3f667985a2
fcc40ac8631faca1709a.

<div align="center">

<a id="p100394"></a>Хэш-кодом сообщения $M_{1}$ является значение:

<a id="p100395"></a> $H(M_{1}) = 00557be5e584fd52a449b16b0251d05d27f94ab76cbaa6da890b59d8ef1\text{е}159d.$ 

<a id="p100396"></a>А.2. Пример 2

</div>

<a id="p100397"></a>Пусть необходимо вычислить хэш-код сообщения

<a id="p100398"></a> ![формула](https://i.bukva.ai/3rbxVDUb/img_94.png) 

<div align="center">

<a id="p100399"></a>А.2.1. Для функции хэширования с длиной хэш-кода 512 бит<br>
<a id="p100400"></a>Присваиваются значения:

</div>


<a id="p100401"></a> $h: = IV = 0^{512};$ 

<a id="p100402"></a> $N: = 0^{512};$ 

<a id="p100403"></a> $\sum : = 0^{512}.$ 

<a id="p100404"></a>Длина сообщения $|M_{2}| = 576>512$ , поэтому сначала преобразуется часть сообщения

<div align="center">

<a id="p100405"></a>m: = fbeafaebef20fffbf0e1e0f0f520e0ed20e8ece0ebe5f0f2f120

</div>

fff0eeec20f120faf2fee5e2202ce8f6f3ede220e8e6eee1e8f0f2d

<div align="center">

1202ce8f0f2e5e220e5d1.

<a id="p100406"></a>Вычисляется значение $K: = LPS(hN) = LPS(0^{512})$ .

</div>

<a id="p100407"></a>После преобразования S:

<div align="center">

<a id="p100408"></a> ![формула](https://i.bukva.ai/3rbxVDUb/img_95.png) 

<a id="p100409"></a>после преобразования P:

</div>


<a id="p100410"></a> ![формула](https://i.bukva.ai/3rbxVDUb/img_96.png) 

<a id="p100411"></a>после преобразования L:

<div align="center">

<a id="p100412"></a> ![формула](https://i.bukva.ai/3rbxVDUb/img_97.png) 

<a id="p100413"></a>Затем выполняется преобразование E (K, m):<br>
<a id="p100414"></a>Итерация 1<br>
<a id="p100415"></a> ![формула](https://i.bukva.ai/3rbxVDUb/img_98.png) 

<a id="p100416"></a> ![формула](https://i.bukva.ai/3rbxVDUb/img_99.png) 

<a id="p100417"></a> ![формула](https://i.bukva.ai/3rbxVDUb/img_100.png) 

<a id="p100418"></a> ![формула](https://i.bukva.ai/3rbxVDUb/img_101.png) 

<a id="p100419"></a> ![формула](https://i.bukva.ai/3rbxVDUb/img_102.png) 

<a id="p100420"></a> ![формула](https://i.bukva.ai/3rbxVDUb/img_103.png) 

</div>


<a id="p100421"></a> ![формула](https://i.bukva.ai/3rbxVDUb/img_104.png) 

<a id="p100422"></a> ![формула](https://i.bukva.ai/3rbxVDUb/img_105.png) 

<div align="center">

<a id="p100423"></a> ![формула](https://i.bukva.ai/3rbxVDUb/img_106.png) 

<a id="p100424"></a>Итерация 2

</div>

<a id="p100425"></a> ![формула](https://i.bukva.ai/3rbxVDUb/img_107.png) 

<div align="center">

<a id="p100426"></a> ![формула](https://i.bukva.ai/3rbxVDUb/img_108.png) 

<a id="p100427"></a>Итерация 3

</div>

<a id="p100428"></a> ![формула](https://i.bukva.ai/3rbxVDUb/img_109.png) 

<div align="center">

<a id="p100429"></a> ![формула](https://i.bukva.ai/3rbxVDUb/img_110.png) 

<a id="p100430"></a>Итерация 4

</div>

<a id="p100431"></a> ![формула](https://i.bukva.ai/3rbxVDUb/img_111.png) 

<div align="center">

<a id="p100432"></a> ![формула](https://i.bukva.ai/3rbxVDUb/img_112.png) 

<a id="p100433"></a>Итерация 5

</div>

<a id="p100434"></a> ![формула](https://i.bukva.ai/3rbxVDUb/img_113.png) 

<div align="center">

<a id="p100435"></a> ![формула](https://i.bukva.ai/3rbxVDUb/img_114.png) 

<a id="p100436"></a>Итерация 6

</div>

<a id="p100437"></a> ![формула](https://i.bukva.ai/3rbxVDUb/img_115.png) 

<div align="center">

<a id="p100438"></a> ![формула](https://i.bukva.ai/3rbxVDUb/img_116.png) 

<a id="p100439"></a>Итерация 7

</div>

<a id="p100440"></a> ![формула](https://i.bukva.ai/3rbxVDUb/img_117.png) 

<div align="center">

<a id="p100441"></a> ![формула](https://i.bukva.ai/3rbxVDUb/img_118.png) 

<a id="p100442"></a>Итерация 8

</div>

<a id="p100443"></a> ![формула](https://i.bukva.ai/3rbxVDUb/img_119.png) 

<div align="center">

<a id="p100444"></a> ![формула](https://i.bukva.ai/3rbxVDUb/img_120.png) 

<a id="p100445"></a>Итерация 9

</div>

<a id="p100446"></a> ![формула](https://i.bukva.ai/3rbxVDUb/img_121.png) 

<div align="center">

<a id="p100447"></a> ![формула](https://i.bukva.ai/3rbxVDUb/img_122.png) 

<a id="p100448"></a>Итерация 10

</div>

<a id="p100449"></a> ![формула](https://i.bukva.ai/3rbxVDUb/img_123.png) 

<div align="center">

<a id="p100450"></a> ![формула](https://i.bukva.ai/3rbxVDUb/img_124.png) 

<a id="p100451"></a>Итерация 11

</div>

<a id="p100452"></a> ![формула](https://i.bukva.ai/3rbxVDUb/img_125.png) 

<div align="center">

<a id="p100453"></a> ![формула](https://i.bukva.ai/3rbxVDUb/img_126.png) 

<a id="p100454"></a>Итерация 12

</div>

<a id="p100455"></a> ![формула](https://i.bukva.ai/3rbxVDUb/img_127.png) 

<div align="center">

<a id="p100456"></a> ![формула](https://i.bukva.ai/3rbxVDUb/img_128.png) 

<a id="p100457"></a>Итерация 13

</div>

<a id="p100458"></a> ![формула](https://i.bukva.ai/3rbxVDUb/img_129.png) 

<a id="p100459"></a> ![формула](https://i.bukva.ai/3rbxVDUb/img_130.png) 

<a id="p100460"></a>Результат выполнения преобразования $g_{N}(h,m)$ :

<div align="center">

<a id="p100461"></a>h = cd7f602312faa465e3bb4ccd9795395de2914e938f10f8e127b<br>
7ac459b0c517b98ef779ef7c7a46aa7843b8889731f482e5d221e8

</div>

e2cea852e816cdac407c7af.

<a id="p100462"></a>Изменяются значения переменных N и $\sum$ :

<div align="center">

<a id="p100463"></a>N = 000000000000000000000000000000000000000000000000000<br>
000000000000000000000000000000000000000000000000000000000

</div>

00000000000000000200,

<a id="p100464"></a> ![формула](https://i.bukva.ai/3rbxVDUb/img_131.png) 

<a id="p100465"></a>Длина оставшейся части сообщения меньше 512, поэтому происходит заполнение неполного блока.

<div align="center">

<a id="p100466"></a>m: = 000000000000000000000000000000000000000000000000000<br>
00000000000000000000000000000000000000000000000000000000000

</div>

1fbe2e5f0eee3c820.

<a id="p100467"></a>Результат выполнения преобразования $g_{N}(h,m)$ :

<div align="center">

<a id="p100468"></a>h = c544ae6efdf14404f089c72d5faf8dc6aca1db5e28577fc

</div>

07818095f1df70661e8b84d0706811cf92dffb8f96e61493 dc382795c6ed7a17b64685902cbdc878e.

<a id="p100469"></a>Изменяются значения переменных N и $\sum$ :

<div align="center">

<a id="p100470"></a>N = 00000000000000000000000000000000000000000000000000000<br>
00000000000000000000000000000000000000000000000000000000000

</div>

0000000000000240,

<a id="p100471"></a> ![формула](https://i.bukva.ai/3rbxVDUb/img_132.png) 

<a id="p100472"></a>Результат выполнения преобразования $g_{0}(h,N)$ :

<div align="center">

<a id="p100473"></a>h = 4deb6649ffa5caf4163d9d3f9967fbbd6eb3da68f916b6a09f41<br>
f2518b81292b703dc5d74e1ace5bcd3458af43bb456e837326088

</div>

f2b5df14bf83997a0b1ad8d.

<a id="p100474"></a>Результат выполнения преобразования $g_{0}(h, \sum)$ :

<div align="center">

<a id="p100475"></a>h = 28fbc9bada033b1460642bdcddb90c3fb3e56c497ccd0f62b8a2<br>
ad4935e85f037613966de4ee00531ae60f3b5a47f8dae06915d5

</div>

f2f194996fcabf2622e6881e.

<a id="p100476"></a>Хэш-кодом сообщения $M_{2}$ является значение:

<a id="p100477"></a> ![формула](https://i.bukva.ai/3rbxVDUb/img_133.png) 

<a id="p100478"></a>А.2.2. Для функции хэширования с длиной хэш-кода 256 бит
<a id="p100479"></a>Присваиваются значения:

<div align="center">

<a id="p100480"></a> $h: = IV = (00000001)^{64};$ 

<a id="p100481"></a> $N: = 0^{512};$ 

</div>


<a id="p100482"></a> $\sum : = 0^{512}.$ 

<a id="p100483"></a>Длина сообщения $|M_{2}| = 576>512$ , поэтому сначала преобразуется часть сообщения

<div align="center">

<a id="p100484"></a>m: = fbeafaebef20fffbf0e1e0f0f520e0ed20e8ece0ebe5f0f2f120<br>
fff0eeec20f120faf2fee5e2202ce8f6f3ede220e8e6eee1e8f0f2

</div>

d1202ce8f0f2e5e220e5d1.

<a id="p100485"></a>Вычисляется значение $K: = LPS(hN) = LPS((00000001)^{64})$ .
<a id="p100486"></a>После преобразования S:

<a id="p100487"></a> ![формула](https://i.bukva.ai/3rbxVDUb/img_134.png) 

<div align="center">

<a id="p100488"></a>после преобразования P:

<a id="p100489"></a> ![формула](https://i.bukva.ai/3rbxVDUb/img_135.png) 

<a id="p100490"></a>после преобразования L:

<a id="p100491"></a> ![формула](https://i.bukva.ai/3rbxVDUb/img_136.png) 

</div>


<a id="p100492"></a>Затем выполняется преобразование E (K, m):
<a id="p100493"></a>Итерация 1
<a id="p100494"></a> ![формула](https://i.bukva.ai/3rbxVDUb/img_137.png) 

<div align="center">

<a id="p100495"></a> ![формула](https://i.bukva.ai/3rbxVDUb/img_138.png) 

<a id="p100496"></a> ![формула](https://i.bukva.ai/3rbxVDUb/img_139.png) 

<a id="p100497"></a> ![формула](https://i.bukva.ai/3rbxVDUb/img_140.png) 

<a id="p100498"></a> ![формула](https://i.bukva.ai/3rbxVDUb/img_141.png) 

<a id="p100499"></a> ![формула](https://i.bukva.ai/3rbxVDUb/img_142.png) 

<a id="p100500"></a> ![формула](https://i.bukva.ai/3rbxVDUb/img_143.png) 

<a id="p100501"></a> ![формула](https://i.bukva.ai/3rbxVDUb/img_144.png) 

<a id="p100502"></a> ![формула](https://i.bukva.ai/3rbxVDUb/img_145.png) 

</div>


<a id="p100503"></a>Итерация 2

<div align="center">

<a id="p100504"></a> ![формула](https://i.bukva.ai/3rbxVDUb/img_146.png) 

<a id="p100505"></a> ![формула](https://i.bukva.ai/3rbxVDUb/img_147.png) 

</div>


<a id="p100506"></a>Итерация 3

<div align="center">

<a id="p100507"></a> ![формула](https://i.bukva.ai/3rbxVDUb/img_148.png) 

<a id="p100508"></a> ![формула](https://i.bukva.ai/3rbxVDUb/img_149.png) 

</div>


<a id="p100509"></a>Итерация 4

<div align="center">

<a id="p100510"></a> ![формула](https://i.bukva.ai/3rbxVDUb/img_150.png) 

<a id="p100511"></a> ![формула](https://i.bukva.ai/3rbxVDUb/img_151.png) 

</div>


<a id="p100512"></a>Итерация 5

<div align="center">

<a id="p100513"></a> ![формула](https://i.bukva.ai/3rbxVDUb/img_152.png) 

<a id="p100514"></a> ![формула](https://i.bukva.ai/3rbxVDUb/img_153.png) 

</div>


<a id="p100515"></a>Итерация 6

<div align="center">

<a id="p100516"></a> ![формула](https://i.bukva.ai/3rbxVDUb/img_154.png) 

<a id="p100517"></a> ![формула](https://i.bukva.ai/3rbxVDUb/img_155.png) 

</div>


<a id="p100518"></a>Итерация 7

<div align="center">

<a id="p100519"></a> ![формула](https://i.bukva.ai/3rbxVDUb/img_156.png) 

<a id="p100520"></a> ![формула](https://i.bukva.ai/3rbxVDUb/img_157.png) 

</div>


<a id="p100521"></a>Итерация 8

<div align="center">

<a id="p100522"></a> ![формула](https://i.bukva.ai/3rbxVDUb/img_158.png) 

<a id="p100523"></a> ![формула](https://i.bukva.ai/3rbxVDUb/img_159.png) 

</div>


<a id="p100524"></a>Итерация 9

<div align="center">

<a id="p100525"></a> ![формула](https://i.bukva.ai/3rbxVDUb/img_160.png) 

<a id="p100526"></a> ![формула](https://i.bukva.ai/3rbxVDUb/img_161.png) 

</div>


<a id="p100527"></a>Итерация 10

<div align="center">

<a id="p100528"></a> ![формула](https://i.bukva.ai/3rbxVDUb/img_162.png) 

<a id="p100529"></a> ![формула](https://i.bukva.ai/3rbxVDUb/img_163.png) 

</div>


<a id="p100530"></a>Итерация 11

<div align="center">

<a id="p100531"></a> ![формула](https://i.bukva.ai/3rbxVDUb/img_164.png) 

<a id="p100532"></a> ![формула](https://i.bukva.ai/3rbxVDUb/img_165.png) 

</div>


<a id="p100533"></a>Итерация 12

<div align="center">

<a id="p100534"></a> ![формула](https://i.bukva.ai/3rbxVDUb/img_166.png) 

<a id="p100535"></a> ![формула](https://i.bukva.ai/3rbxVDUb/img_167.png) 

</div>


<a id="p100536"></a>Итерация 13

<div align="center">

<a id="p100537"></a> ![формула](https://i.bukva.ai/3rbxVDUb/img_168.png) 

</div>


<a id="p100538"></a> ![формула](https://i.bukva.ai/3rbxVDUb/img_169.png) 

<a id="p100539"></a>Результат выполнения преобразования $g_{N}(h,m)$ :

<div align="center">

<a id="p100540"></a>h = 203cc15dd55fcaa5b7a3bd98fb2408a67d5b9f33a80bb50540852<br>
b204265a2c1aaca5efe1d8d51b2e1636e34f5becc077d930114

</div>

fefaf176b69c15ad8f2b6878.

<a id="p100541"></a>Изменяются значения переменных N и $\sum$ :

<div align="center">

<a id="p100542"></a>N = 0000000000000000000000000000000000000000000000000000<br>
000000000000000000000000000000000000000000000000000000

</div>

0000000000000000000200,

<a id="p100543"></a> ![формула](https://i.bukva.ai/3rbxVDUb/img_170.png) 

<a id="p100544"></a>Длина оставшейся части сообщения меньше 512, поэтому происходит заполнение неполного блока:

<div align="center">

<a id="p100545"></a>m = 000000000000000000000000000000000000000000000000000<br>
000000000000000000000000000000000000000000000000000000000

</div>

0001fbe2e5f0eee3c820.

<a id="p100546"></a>Результат выполнения преобразования $g_{N}(h,m)$ :

<div align="center">

<a id="p100547"></a>h = a69049e7bd076ab775bc2873af26f098c538b17e39a5c027<br>
d532f0a2b3b56426c96b285fa297b9d39ae6afd8b9001d97bb718a65

</div>

fcc53c41b4ebf4991a617227.

<a id="p100548"></a>Изменяются значения переменных N и $\sum$ :

<div align="center">

<a id="p100549"></a>N = 0000000000000000000000000000000000000000000000000000<br>
00000000000000000000000000000000000000000000000000000000

</div>

00000000000000000240,

<a id="p100550"></a> ![формула](https://i.bukva.ai/3rbxVDUb/img_171.png) 

<a id="p100551"></a>Результат выполнения преобразования $g_{0}(h,N)$ :

<div align="center">

<a id="p100552"></a>h = aee3bd55ea6f387bcf28c6dcbdbbfb3ddacc67dcc13dbd8d548<br>
c6bf808111d4b75b8e74d2afae960835ae6a5f03575559c9fd839783

</div>

ffcd5cf99bd61566b4818.

<a id="p100553"></a>Результат выполнения преобразования $g_{0}(h, \sum)$ :

<div align="center">

<a id="p100554"></a>h = 508f7e553c06501d749a66fc28c6cac0b005746d97537fa85d9<br>
e40904efed29dc345e53d7f84875d5068e4eb743f0793d673f09741f

</div>

9578471fb2598cb35c230.

<a id="p100555"></a>Хэш-кодом сообщения $M_{2}$ является значение:

<a id="p100556"></a> $H(M_{2}) = 508f7e553c06501d749a66fc28c6cac0b005746d97537fa85d9e40904efed29d.$ 





<div align="center">

<a id="p100557"></a>**БИБЛИОГРАФИЯ <*>**

</div>



<a id="p100558"></a>

---

<a id="p100559"></a><*> Оригиналы международных стандартов ИСО/МЭК находятся во ФГУП "Стандартинформ" Федерального агентства по техническому регулированию и метрологии.


1. <a id="p100560"></a>ИСО 2382-2:1976               Системы     обработки    информации.
   (ISO 2382-2:1976)             Словарь. Часть  2. Арифметические  и
   логические операции (Data processing
   -  Vocabulary  -  Part 2: Arithmetic
   and logic operations)
2. <a id="p100561"></a>ИСО/МЭК 9796-2:2010           Информационные   технологии.  Методы
   (ISO/IEC 9796-2:2010)         обеспечения    безопасности.   Схемы
   цифровой   подписи,   обеспечивающие
   восстановление  сообщений.  Часть 2.
   Механизмы  на основе   целочисленной
   факторизации (Information technology
   -  Security   techniques  -  Digital
   signatures with  appendix  - Part 2:
   Integer     factorization      based
   mechanisms)
3. <a id="p100562"></a>ИСО/МЭК 9796-3:2006           Информационные  технологии.   Методы
   (ISO/IEC 9796-3:2006)         обеспечения   безопасности.    Схемы
   цифровой   подписи,   обеспечивающие
   восстановление сообщений.  Часть  3.
   Механизмы   на   основе  дискретного
   логарифма (Information  technology -
   Security   techniques    -   Digital
   signature  schemes  giving   message
   recovery    -   Part   3:   Discrete
   logarithm based mechanisms)
4. <a id="p100563"></a>ИСО/МЭК 14888-1:2008          Информационные   технологии.  Методы
   (ISO/IEC 14888-1:2008)        защиты.        Цифровые      подписи
   с   приложением.   Часть  1.   Общие
   положения (Information  technology -
   Security   techniques    -   Digital
   signatures  with  appendix - Part 1:
   General)
5. <a id="p100564"></a>ИСО/МЭК 14888-2:2008          Информационные  технологии.   Методы
   (ISO/IEC 14888-2:2008)        защиты.       Цифровые       подписи
   с приложением. Часть  2.  Механизмы,
   основанные        на      разложении
   на множители (Information technology
   -  Security   techniques  -  Digital
   signatures  with  appendix - Part 2:
   Integer      factorization     based
   mechanisms)
6. <a id="p100565"></a>ИСО/МЭК 14888-3:2006          Информационные  технологии.   Методы
   (ISO/IEC 14888-3:2006)        защиты.       Цифровые       подписи
   с  приложением.  Часть 3.  Механизмы
   на  основе   дискретного   логарифма
   (Information technology  -  Security
   techniques - Digital signatures with
   appendix   -    Part   3:   Discrete
   logarithm based mechanisms)
7. <a id="p100566"></a>ИСО/МЭК 14888-3:2006/Изм.     Информационные  технологии.   Методы
   1:2010 (ISO/IEC 14888-3:2006/ защиты.      Цифровые        подписи
   Amd 1:2010)                   с  приложением.  Часть 3.  Механизмы
   на   основе  дискретного  логарифма.
   Изменение   1.   Алгоритм    русской
   цифровой    подписи    эллиптической
   кривой,  алгоритм  цифровой  подписи
   Шнорра,  алгоритм  цифровой  подписи
   Шнорра   для   эллиптической  кривой
   и полный алгоритм  цифровой  подписи
   Шнорра   для  эллиптической   кривой
   (Information  technology -  Security
   techniques - Digital signatures with
   appendix    -   Part   3:   Discrete
   logarithm      based     mechanisms.
   Amendment 1. Elliptic Curve  Russian
   Digital Signature Algorithm, Schnorr
   Digital     Signature     Algorithm,
   Elliptic   Curve   Schnorr   Digital
   Signature  Algorithm,  and  Elliptic
   Curve Full Schnorr Digital Signature
   Algorithm)
8. <a id="p100567"></a>ИСО/МЭК 10118-1:2000          Информационные  технологии.   Методы
   (ISO/IEC 10118-1:2000)        защиты    информации.   Хэш-функции.
   Часть     1.     Общие     положения
   (Information technology  -  Security
   techniques - Hash-functions  -  Part
   1: General)
9. <a id="p100568"></a>ИСО/МЭК 10118-2:2010          Информационные  технологии.   Методы
   (ISO/IEC 10118-2:2010)        защиты   информации.    Хэш-функции.
   Часть        2.          Хэш-функции
   с      использованием      алгоритма
   шифрования     n-битными     блоками
   (Information  technology -  Security
   techniques - Hash-functions- Part 2:
   Hash-functions using  an n-bit block
   cipher)
10. <a id="p100569"></a>ИСО/МЭК 10118-3:2004          Информационные  технологии.   Методы
   (ISO/IEC 10118-3:2004)        защиты    информации.   Хэш-функции.
   Часть   3.  Выделенные   хэш-функции
   (Information  technology  - Security
   techniques -  Hash-functions -  Part
   3: Dedicated hash-functions)
11. <a id="p100570"></a>ИСО/МЭК 10118-4:1998          Информационные  технологии.   Методы
   (ISO/IEC 10118-4:1998)        защиты   информации.    Хэш-функции.
   Часть 4.  Хэш-функции  с применением
   арифметики   в  остаточных   классах
   (Information technology  -  Security
   techniques -  Hash-functions  - Part
   4:   Hash-functions  using   modular
   arithmetic)
   <a id="p100571"></a>------------------------------------------------------------------
