Коммит af144d8e создал по автору Моисеенко Андрей Алексеевич's avatar Моисеенко Андрей Алексеевич
Просмотр файлов

~

владелец af1df895
...@@ -65,6 +65,7 @@ ...@@ -65,6 +65,7 @@
#include "temp.h" #include "temp.h"
//#define KUZNECHIK_DEBUG //#define KUZNECHIK_DEBUG
#define KUZNECHIK_BYTE_S // no g++ bug
//#include <stdio.h> //#include <stdio.h>
...@@ -101,9 +102,8 @@ const unsigned char CChipherKuznechik::Pi[256] = ...@@ -101,9 +102,8 @@ const unsigned char CChipherKuznechik::Pi[256] =
}; };
// Таблица обратного нелинейного преобразования // Таблица обратного нелинейного преобразования
//const //unsigned char CChipherKuznechik::Pi_reverse[256] = {};
unsigned char CChipherKuznechik::Pi_reverse[256] = {}; const unsigned char CChipherKuznechik::Pi_reverse[256] =
/*
{ {
0xA5, 0x2D, 0x32, 0x8F, 0x0E, 0x30, 0x38, 0xC0, 0x54, 0xE6, 0x9E, 0x39, 0x55, 0x7E, 0x52, 0x91, 0xA5, 0x2D, 0x32, 0x8F, 0x0E, 0x30, 0x38, 0xC0, 0x54, 0xE6, 0x9E, 0x39, 0x55, 0x7E, 0x52, 0x91,
0x64, 0x03, 0x57, 0x5A, 0x1C, 0x60, 0x07, 0x18, 0x21, 0x72, 0xA8, 0xD1, 0x29, 0xC6, 0xA4, 0x3F, 0x64, 0x03, 0x57, 0x5A, 0x1C, 0x60, 0x07, 0x18, 0x21, 0x72, 0xA8, 0xD1, 0x29, 0xC6, 0xA4, 0x3F,
...@@ -122,7 +122,6 @@ unsigned char CChipherKuznechik::Pi_reverse[256] = {}; ...@@ -122,7 +122,6 @@ unsigned char CChipherKuznechik::Pi_reverse[256] = {};
0x90, 0xD0, 0x24, 0x34, 0xCB, 0xED, 0xF4, 0xCE, 0x99, 0x10, 0x44, 0x40, 0x92, 0x3A, 0x01, 0x26, 0x90, 0xD0, 0x24, 0x34, 0xCB, 0xED, 0xF4, 0xCE, 0x99, 0x10, 0x44, 0x40, 0x92, 0x3A, 0x01, 0x26,
0x12, 0x1A, 0x48, 0x68, 0xF5, 0x81, 0x8B, 0xC7, 0xD6, 0x20, 0x0A, 0x08, 0x00, 0x4C, 0xD7, 0x74 0x12, 0x1A, 0x48, 0x68, 0xF5, 0x81, 0x8B, 0xC7, 0xD6, 0x20, 0x0A, 0x08, 0x00, 0x4C, 0xD7, 0x74
}; };
*/
unsigned short * CChipherKuznechik::Pi2 = nullptr; unsigned short * CChipherKuznechik::Pi2 = nullptr;
unsigned short * CChipherKuznechik::Pi2_reverse = nullptr; unsigned short * CChipherKuznechik::Pi2_reverse = nullptr;
...@@ -166,6 +165,7 @@ void CChipherKuznechik::ClearRoundKeys() noexcept ...@@ -166,6 +165,7 @@ void CChipherKuznechik::ClearRoundKeys() noexcept
void CChipherKuznechik::CreateTables() noexcept void CChipherKuznechik::CreateTables() noexcept
{ {
#ifndef KUZNECHIK_BYTE_S
if (!Pi_reverse[0xff]) if (!Pi_reverse[0xff])
{ {
for (int i = 0; i < 0x100; i++) for (int i = 0; i < 0x100; i++)
...@@ -228,12 +228,13 @@ void CChipherKuznechik::CreateTables() noexcept ...@@ -228,12 +228,13 @@ void CChipherKuznechik::CreateTables() noexcept
#endif #endif
} }
} }
#endif
} }
// Функция S // Функция S
void CChipherKuznechik::S(_uqword* in_out) noexcept void CChipherKuznechik::S(_uqword* in_out) noexcept
{ {
#if 0 #ifdef KUZNECHIK_BYTE_S
// Переход к представлению в байтах // Переход к представлению в байтах
unsigned char *b = (unsigned char*)in_out; unsigned char *b = (unsigned char*)in_out;
for (int i = 0; i < KUZNECHIK_BLOCK_SIZE; i++) for (int i = 0; i < KUZNECHIK_BLOCK_SIZE; i++)
...@@ -254,7 +255,8 @@ void CChipherKuznechik::S(_uqword* in_out) noexcept ...@@ -254,7 +255,8 @@ void CChipherKuznechik::S(_uqword* in_out) noexcept
// Обратная функция S // Обратная функция S
void CChipherKuznechik::S_reverse(_uqword* in_out) noexcept void CChipherKuznechik::S_reverse(_uqword* in_out) noexcept
{ {
#if 0 #ifdef KUZNECHIK_BYTE_S
// no gcc bug
// Переход к представлению в байтах // Переход к представлению в байтах
unsigned char *b = (unsigned char*)in_out; unsigned char *b = (unsigned char*)in_out;
for (int i = 0; i < KUZNECHIK_BLOCK_SIZE; i++) for (int i = 0; i < KUZNECHIK_BLOCK_SIZE; i++)
...@@ -284,6 +286,8 @@ void CChipherKuznechik::S_reverse(_uqword* in_out) noexcept ...@@ -284,6 +286,8 @@ void CChipherKuznechik::S_reverse(_uqword* in_out) noexcept
{ {
printf("[%04x] = %04x , != %04x\n", ww, w[i], ((unsigned short*)b16)[i]); printf("[%04x] = %04x , != %04x\n", ww, w[i], ((unsigned short*)b16)[i]);
} }
#else
// gcc bug
#endif #endif
} }
#endif #endif
......
...@@ -132,8 +132,8 @@ protected: ...@@ -132,8 +132,8 @@ protected:
chunk round_keys[10]; chunk round_keys[10];
// Таблица прямого нелинейного преобразования согластно ГОСТ 34.12-2015 // Таблица прямого нелинейного преобразования согластно ГОСТ 34.12-2015
static const unsigned char Pi[256];//, Pi_reverse[256]; static const unsigned char Pi[256], Pi_reverse[256];
static unsigned char Pi_reverse[256]; //static unsigned char Pi_reverse[256];
static unsigned short *Pi2, *Pi2_reverse; static unsigned short *Pi2, *Pi2_reverse;
static const unsigned char linear_vector[16]; static const unsigned char linear_vector[16];
static const unsigned char StaticKey[32]; static const unsigned char StaticKey[32];
......
Поддерживает Markdown
0% или .
You are about to add 0 people to the discussion. Proceed with caution.
Сначала завершите редактирование этого сообщения!
Пожалуйста, зарегистрируйтесь или чтобы прокомментировать