Открыть боковую панель
Моисеенко Андрей Алексеевич
CryptLib
Коммиты
af144d8e
Коммит
af144d8e
создал
Мар 10, 2025
по автору
Моисеенко Андрей Алексеевич
Просмотр файлов
~
владелец
af1df895
Изменения
2
Скрыть пробелы
Построчно
Рядом
Kuznechik_MAA.cpp
Просмотр файла @
af144d8e
...
@@ -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
#if
def 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
...
...
Kuznechik_MAA.h
Просмотр файла @
af144d8e
...
@@ -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.
Сначала завершите редактирование этого сообщения!
Отмена
Пожалуйста,
зарегистрируйтесь
или
войдите
чтобы прокомментировать