Я новичок в коде C++, я пытаюсь открыть AES-код в библиотеке crypt++, чтобы добавить круглый ключ и столбец mix, но я не знаю, как получить к ним доступ. Любая помощь мне нравится. Спасибо
Реализация AES находится в rijndael.cpp. Вы попросили sbox, добавили круглый ключ и операции смешивания; все они находятся в макросах QUARTER_ROUND:
QUARTER_ROUND_FE
- первый раунд шифрованияQUARTER_ROUND_E
- последующие раунды шифрованияQUARTER_ROUND_LE
- последний раунд шифрования и эквивалентные макросы дешифрования, заканчивающиеся на D
не E
Они определяются как
#define QUARTER_ROUND(L, T, t, a, b, c, d) \
a ^= L(T, 3, byte(t)); t >>= 8;\
b ^= L(T, 2, byte(t)); t >>= 8;\
c ^= L(T, 1, byte(t)); t >>= 8;\
d ^= L(T, 0, t);
#define TL_M(T, i, x) (*(word32 *)((byte *)T + x*8 + (i+3)%4+1))
#define QUARTER_ROUND_E(t, a, b, c, d) QUARTER_ROUND(TL_M, Te, t, a, b, c, d)
где
TL_M
- это смешивающий макросTe
- это S-box для шифрованияt
представляет собой 32-битную часть ключаa
, b
, c
, d
представляют собой 32-битные части текущего блокаЯ думаю, что непросто найти внутренний код раундов AES,