Files
phyatk10/aes.hpp

39 lines
1.3 KiB
C++

#ifndef AES_HPP_
#define AES_HPP_
#include <cstdint>
class AES
{
public:
static const uint8_t sbox[256];
static const uint8_t r_sbox[256];
static const uint8_t rc[10];
static const uint8_t irreducible_polynomial;
AES();
static void encrypt_ecb(uint8_t data[16], const uint8_t key[16]);
static void decrypt_ecb(uint8_t data[16], const uint8_t key[16]);
static void construct_round_keys(const uint8_t initial_key_[16], uint8_t round_keys_[11][16]);
static uint32_t roundkey_g(uint32_t last_roundkey, uint8_t round);
static void add_round_key(uint8_t data[16], const uint8_t key[16]);
static void shift_rows(uint8_t data[16]);
static void r_shift_rows(uint8_t data[16]);
static void sub_bytes(uint8_t data[16]);
static void r_sub_bytes(uint8_t data[16]);
static void mix_columns(uint8_t data[16]);
static void r_mix_columns(uint8_t data[16]);
static void r_mix_column(uint8_t data[4]);
static void print_data(uint8_t data[16]);
static uint8_t gf_mult2(uint8_t value);
static uint8_t gf_mult3(uint8_t value);
static uint8_t gf_mult4(uint8_t value);
static uint8_t gf_mult8(uint8_t value);
static uint8_t gf_mult9(uint8_t value);
static uint8_t gf_multB(uint8_t value);
static uint8_t gf_multD(uint8_t value);
static uint8_t gf_multE(uint8_t value);
static uint8_t gf_reduce(uint8_t value);
};
#endif