45 QByteArray decrypt(
const QByteArray &data);
46 QByteArray encrypt(
const QByteArray &data);
47 static void test1(
void);
48 static void test1_decrypt_block(
void);
49 static void test1_encrypt_block(
void);
50 static void test1_key_expansion(
void);
51 static void test_performance(
void);
52 void set_key(
const QByteArray &key);
58 uint8_t m_round_key[60][4] {};
59 uint8_t m_state[4][4] {};
60 QByteArray decrypt_block(
const QByteArray &block);
61 QByteArray encrypt_block(
const QByteArray &block);
63 uint8_t xtime(uint8_t x)
65 return static_cast<uint8_t
> ((x << 1) ^ (((x >> 7) & 1) * 0x1b));
68 uint8_t xtime_special(uint8_t x, uint8_t y)
70 auto xtime_y = xtime(y);
72 return static_cast<uint8_t
>
74 (((x >> 1) & 1) * xtime_y) ^
75 (((x >> 2) & 1) * xtime(xtime_y)) ^
76 (((x >> 3) & 1) * xtime(xtime(xtime_y))) ^
77 (((x >> 4) & 1) * xtime(xtime(xtime(xtime_y)))));
80 void add_round_key(
size_t c);
81 void inv_mix_columns(
void);
82 void inv_shift_rows(
void);
83 void inv_sub_bytes(
void);
84 void key_expansion(
void);
85 void mix_columns(
void);
86 void shift_rows(
void);