Открыть боковую панель
Моисеенко Андрей Алексеевич
CryptLib
Коммиты
aac5aea5
Коммит
aac5aea5
создал
Мар 04, 2025
по автору
Моисеенко Андрей Алексеевич
Просмотр файлов
~
владелец
71185bac
Изменения
2
Скрыть пробелы
Построчно
Рядом
Gost_BS_MAA.cpp
Просмотр файла @
aac5aea5
...
@@ -501,7 +501,7 @@ void gost_ctx::Decrypt(const _dword* Key, const _dword* pIn, size_t Size, const
...
@@ -501,7 +501,7 @@ void gost_ctx::Decrypt(const _dword* Key, const _dword* pIn, size_t Size, const
}
}
// high level Imito function
// high level Imito function
void
gost_ctx
::
Imito
(
const
_dword
*
Key
,
const
_dword
*
pIn
,
size_t
Size
,
_dword
*
ImitoValue
,
const
_dword
*
Salt
,
const
voi
d
*
End
)
const
noexcept
void
gost_ctx
::
Imito
(
const
_dword
*
Key
,
const
_dword
*
pIn
,
size_t
Size
,
_dword
*
ImitoValue
,
const
_dword
*
Salt
,
const
_dwor
d
*
End
)
const
noexcept
{
{
Key
=
Key
?
Key
:
(
const
_dword
*
)
StaticKey
;
Key
=
Key
?
Key
:
(
const
_dword
*
)
StaticKey
;
#ifdef CROSS_COMPATIBLE_ALGO
#ifdef CROSS_COMPATIBLE_ALGO
...
@@ -515,7 +515,9 @@ void gost_ctx::Imito(const _dword* Key, const _dword* pIn, size_t Size, _dword*
...
@@ -515,7 +515,9 @@ void gost_ctx::Imito(const _dword* Key, const _dword* pIn, size_t Size, _dword*
_dword
n12
[
2
],
t
[
2
];
_dword
n12
[
2
],
t
[
2
];
if
(
Salt
)
if
(
Salt
)
{
{
memcpy
(
n12
,
Salt
,
sizeof
(
n12
));
//memcpy(n12, Salt, sizeof(n12));
n12
[
0
]
=
Salt
[
0
];
n12
[
1
]
=
Salt
[
1
];
}
}
else
else
{
{
...
@@ -532,7 +534,9 @@ void gost_ctx::Imito(const _dword* Key, const _dword* pIn, size_t Size, _dword*
...
@@ -532,7 +534,9 @@ void gost_ctx::Imito(const _dword* Key, const _dword* pIn, size_t Size, _dword*
{
{
if
(
End
)
if
(
End
)
{
{
memcpy
(
t
,
End
,
sizeof
(
t
));
//memcpy(t, End, sizeof(t));
t
[
0
]
=
End
[
0
];
t
[
1
]
=
End
[
1
];
}
}
else
else
{
{
...
@@ -556,7 +560,7 @@ void gost_ctx::Imito(const _dword* Key, const _dword* pIn, size_t Size, _dword*
...
@@ -556,7 +560,7 @@ void gost_ctx::Imito(const _dword* Key, const _dword* pIn, size_t Size, _dword*
// high level Encrypt function // gamma with feedack
// high level Encrypt function // gamma with feedack
// Key - 32 bytes, Salt - 8 bytes, OutSalt - 8 bytes, Size in bytes
// Key - 32 bytes, Salt - 8 bytes, OutSalt - 8 bytes, Size in bytes
void
gost_ctx
::
EncryptImito
(
const
_dword
*
Key
,
const
_dword
*
pIn
,
size_t
Size
,
const
_dword
*
Salt
,
_dword
*
pOut
,
_dword
*
OutSalt
,
_dword
*
ImitoValue
,
const
voi
d
*
End
)
const
noexcept
void
gost_ctx
::
EncryptImito
(
const
_dword
*
Key
,
const
_dword
*
pIn
,
size_t
Size
,
const
_dword
*
Salt
,
_dword
*
pOut
,
_dword
*
OutSalt
,
_dword
*
ImitoValue
,
const
_dwor
d
*
End
)
const
noexcept
{
{
Key
=
Key
?
Key
:
(
const
_dword
*
)
StaticKey
;
Key
=
Key
?
Key
:
(
const
_dword
*
)
StaticKey
;
#ifdef CROSS_COMPATIBLE_ALGO
#ifdef CROSS_COMPATIBLE_ALGO
...
@@ -587,17 +591,19 @@ void gost_ctx::EncryptImito(const _dword* Key, const _dword* pIn, size_t Size, c
...
@@ -587,17 +591,19 @@ void gost_ctx::EncryptImito(const _dword* Key, const _dword* pIn, size_t Size, c
_dword
t
[
2
];
_dword
t
[
2
];
if
(
End
)
if
(
End
)
{
{
memcpy
(
t
,
End
,
sizeof
(
t
));
//memcpy(t, End, sizeof(t));
t
[
0
]
=
End
[
0
];
t
[
1
]
=
End
[
1
];
}
}
else
else
{
{
t
[
0
]
=
t
[
1
]
=
0
;
t
[
1
]
=
t
[
0
]
=
0
;
}
}
memcpy
(
t
,
pIn
,
Size
&
7
);
memcpy
(
t
,
pIn
,
Size
&
7
);
i12
[
0
]
^=
t
[
0
];
i12
[
0
]
^=
t
[
0
];
i12
[
1
]
^=
t
[
1
];
i12
[
1
]
^=
t
[
1
];
gostcrypt16
(
Key
,
i12
);
gostcrypt16
(
Key
,
i12
);
t
[
0
]
=
t
[
1
]
=
0
;
t
[
1
]
=
t
[
0
]
=
0
;
//-----------------------
//-----------------------
memcpy
(
t
,
pIn
,
Size
&
7
);
memcpy
(
t
,
pIn
,
Size
&
7
);
gostcrypt
(
Key
,
n12
);
gostcrypt
(
Key
,
n12
);
...
@@ -620,7 +626,7 @@ void gost_ctx::EncryptImito(const _dword* Key, const _dword* pIn, size_t Size, c
...
@@ -620,7 +626,7 @@ void gost_ctx::EncryptImito(const _dword* Key, const _dword* pIn, size_t Size, c
#endif
#endif
}
}
void
gost_ctx
::
DecryptImito
(
const
_dword
*
Key
,
const
_dword
*
pIn
,
size_t
Size
,
const
_dword
*
Salt
,
_dword
*
pOut
,
_dword
*
OutSalt
,
_dword
*
ImitoValue
,
const
voi
d
*
End
)
const
noexcept
void
gost_ctx
::
DecryptImito
(
const
_dword
*
Key
,
const
_dword
*
pIn
,
size_t
Size
,
const
_dword
*
Salt
,
_dword
*
pOut
,
_dword
*
OutSalt
,
_dword
*
ImitoValue
,
const
_dwor
d
*
End
)
const
noexcept
{
{
Key
=
Key
?
Key
:
(
const
_dword
*
)
StaticKey
;
Key
=
Key
?
Key
:
(
const
_dword
*
)
StaticKey
;
#ifdef CROSS_COMPATIBLE_ALGO
#ifdef CROSS_COMPATIBLE_ALGO
...
@@ -663,17 +669,19 @@ void gost_ctx::DecryptImito(const _dword* Key, const _dword* pIn, size_t Size, c
...
@@ -663,17 +669,19 @@ void gost_ctx::DecryptImito(const _dword* Key, const _dword* pIn, size_t Size, c
//-----------------------
//-----------------------
if
(
End
)
if
(
End
)
{
{
memcpy
(
t
,
End
,
sizeof
(
t
));
//memcpy(t, End, sizeof(t));
t
[
0
]
=
End
[
0
];
t
[
1
]
=
End
[
1
];
}
}
else
else
{
{
t
[
0
]
=
t
[
1
]
=
0
;
t
[
1
]
=
t
[
0
]
=
0
;
}
}
memcpy
(
t
,
pOut
,
Size
&
7
);
memcpy
(
t
,
pOut
,
Size
&
7
);
i12
[
0
]
^=
t
[
0
];
i12
[
0
]
^=
t
[
0
];
i12
[
1
]
^=
t
[
1
];
i12
[
1
]
^=
t
[
1
];
gostcrypt16
(
Key
,
i12
);
gostcrypt16
(
Key
,
i12
);
t
[
0
]
=
t
[
1
]
=
0
;
t
[
1
]
=
t
[
0
]
=
0
;
}
}
ImitoValue
[
0
]
=
i12
[
0
];
ImitoValue
[
0
]
=
i12
[
0
];
ImitoValue
[
1
]
=
i12
[
1
];
ImitoValue
[
1
]
=
i12
[
1
];
...
@@ -984,7 +992,7 @@ void CGostBsMaa::Decrypt(const void * Key, const void * InData, size_t Size, con
...
@@ -984,7 +992,7 @@ void CGostBsMaa::Decrypt(const void * Key, const void * InData, size_t Size, con
void
CGostBsMaa
::
Imito
(
const
void
*
Key
,
const
void
*
InData
,
size_t
Size
,
void
*
ImitoValue
,
const
void
*
Salt
,
const
void
*
End
)
const
noexcept
void
CGostBsMaa
::
Imito
(
const
void
*
Key
,
const
void
*
InData
,
size_t
Size
,
void
*
ImitoValue
,
const
void
*
Salt
,
const
void
*
End
)
const
noexcept
{
{
m_gc
.
Imito
((
const
_dword
*
)
Key
,
(
const
_dword
*
)
InData
,
Size
,
(
_dword
*
)
ImitoValue
,
(
const
_dword
*
)
Salt
,
End
);
m_gc
.
Imito
((
const
_dword
*
)
Key
,
(
const
_dword
*
)
InData
,
Size
,
(
_dword
*
)
ImitoValue
,
(
const
_dword
*
)
Salt
,
(
const
_dword
*
)
End
);
#if 0
#if 0
Key = Key ? Key : m_gc->StaticKey;
Key = Key ? Key : m_gc->StaticKey;
_dword n12[2], t[2];
_dword n12[2], t[2];
...
@@ -1027,12 +1035,12 @@ void CGostBsMaa::Imito(const void * Key, const void * InData, size_t Size, void
...
@@ -1027,12 +1035,12 @@ void CGostBsMaa::Imito(const void * Key, const void * InData, size_t Size, void
void
CGostBsMaa
::
EncryptImito
(
const
void
*
Key
,
const
void
*
InData
,
size_t
Size
,
void
*
ImitoValue
,
const
void
*
Salt
,
void
*
OutData
,
void
*
OutSalt
,
const
void
*
End
)
const
noexcept
void
CGostBsMaa
::
EncryptImito
(
const
void
*
Key
,
const
void
*
InData
,
size_t
Size
,
void
*
ImitoValue
,
const
void
*
Salt
,
void
*
OutData
,
void
*
OutSalt
,
const
void
*
End
)
const
noexcept
{
{
m_gc
.
EncryptImito
((
const
_dword
*
)
Key
,
(
const
_dword
*
)
InData
,
Size
,
(
const
_dword
*
)
Salt
,
(
_dword
*
)
OutData
,
(
_dword
*
)
OutSalt
,
(
_dword
*
)
ImitoValue
,
End
);
m_gc
.
EncryptImito
((
const
_dword
*
)
Key
,
(
const
_dword
*
)
InData
,
Size
,
(
const
_dword
*
)
Salt
,
(
_dword
*
)
OutData
,
(
_dword
*
)
OutSalt
,
(
_dword
*
)
ImitoValue
,
(
const
_dword
*
)
End
);
}
}
void
CGostBsMaa
::
DecryptImito
(
const
void
*
Key
,
const
void
*
InData
,
size_t
Size
,
void
*
ImitoValue
,
const
void
*
Salt
,
void
*
OutData
,
void
*
OutSalt
,
const
void
*
End
)
const
noexcept
void
CGostBsMaa
::
DecryptImito
(
const
void
*
Key
,
const
void
*
InData
,
size_t
Size
,
void
*
ImitoValue
,
const
void
*
Salt
,
void
*
OutData
,
void
*
OutSalt
,
const
void
*
End
)
const
noexcept
{
{
m_gc
.
DecryptImito
((
const
_dword
*
)
Key
,
(
const
_dword
*
)
InData
,
Size
,
(
const
_dword
*
)
Salt
,
(
_dword
*
)
OutData
,
(
_dword
*
)
OutSalt
,
(
_dword
*
)
ImitoValue
,
End
);
m_gc
.
DecryptImito
((
const
_dword
*
)
Key
,
(
const
_dword
*
)
InData
,
Size
,
(
const
_dword
*
)
Salt
,
(
_dword
*
)
OutData
,
(
_dword
*
)
OutSalt
,
(
_dword
*
)
ImitoValue
,
(
const
_dword
*
)
End
);
}
}
void
CGostBsMaa
::
Hash
(
const
void
*
Key
,
const
void
*
InData
,
size_t
Size
,
const
void
*
Salt
,
void
*
Hash
,
int
HashSize
/* = 32*/
)
const
noexcept
void
CGostBsMaa
::
Hash
(
const
void
*
Key
,
const
void
*
InData
,
size_t
Size
,
const
void
*
Salt
,
void
*
Hash
,
int
HashSize
/* = 32*/
)
const
noexcept
...
...
Gost_BS_MAA.h
Просмотр файла @
aac5aea5
...
@@ -97,10 +97,10 @@ struct gost_ctx
...
@@ -97,10 +97,10 @@ struct gost_ctx
// High level functions
// High level functions
void
Encrypt
(
const
_dword
*
Key
,
const
_dword
*
pIn
,
size_t
Size
,
const
_dword
*
Salt
,
_dword
*
pOut
,
_dword
*
OutSalt
)
const
noexcept
;
void
Encrypt
(
const
_dword
*
Key
,
const
_dword
*
pIn
,
size_t
Size
,
const
_dword
*
Salt
,
_dword
*
pOut
,
_dword
*
OutSalt
)
const
noexcept
;
void
Decrypt
(
const
_dword
*
Key
,
const
_dword
*
pIn
,
size_t
Size
,
const
_dword
*
Salt
,
_dword
*
pOut
,
_dword
*
OutSalt
)
const
noexcept
;
void
Decrypt
(
const
_dword
*
Key
,
const
_dword
*
pIn
,
size_t
Size
,
const
_dword
*
Salt
,
_dword
*
pOut
,
_dword
*
OutSalt
)
const
noexcept
;
void
Imito
(
const
_dword
*
Key
,
const
_dword
*
pIn
,
size_t
Size
,
_dword
*
ImitoValue
,
const
_dword
*
Salt
,
const
voi
d
*
End
)
const
noexcept
;
void
Imito
(
const
_dword
*
Key
,
const
_dword
*
pIn
,
size_t
Size
,
_dword
*
ImitoValue
,
const
_dword
*
Salt
,
const
_dwor
d
*
End
)
const
noexcept
;
// 1.12x faster
// 1.12x faster
void
EncryptImito
(
const
_dword
*
Key
,
const
_dword
*
pIn
,
size_t
Size
,
const
_dword
*
Salt
,
_dword
*
pOut
,
_dword
*
OutSalt
,
_dword
*
ImitoValue
,
const
voi
d
*
End
)
const
noexcept
;
void
EncryptImito
(
const
_dword
*
Key
,
const
_dword
*
pIn
,
size_t
Size
,
const
_dword
*
Salt
,
_dword
*
pOut
,
_dword
*
OutSalt
,
_dword
*
ImitoValue
,
const
_dwor
d
*
End
)
const
noexcept
;
void
DecryptImito
(
const
_dword
*
Key
,
const
_dword
*
pIn
,
size_t
Size
,
const
_dword
*
Salt
,
_dword
*
pOut
,
_dword
*
OutSalt
,
_dword
*
ImitoValue
,
const
voi
d
*
End
)
const
noexcept
;
void
DecryptImito
(
const
_dword
*
Key
,
const
_dword
*
pIn
,
size_t
Size
,
const
_dword
*
Salt
,
_dword
*
pOut
,
_dword
*
OutSalt
,
_dword
*
ImitoValue
,
const
_dwor
d
*
End
)
const
noexcept
;
};
};
class
CGostBsMaa
class
CGostBsMaa
...
...
Редактирование
Предварительный просмотр
Поддерживает Markdown
0%
Попробовать снова
или
прикрепить новый файл
.
Отмена
You are about to add
0
people
to the discussion. Proceed with caution.
Сначала завершите редактирование этого сообщения!
Отмена
Пожалуйста,
зарегистрируйтесь
или
войдите
чтобы прокомментировать