#ifndef _AES_H_
#define _AES_H_
#ifndef BYTE
#define BYTE unsigned char
#endif
//typedef unsigned char BYTE;
typedef unsigned char *LPBYTE;
class AES
{
public:
typedef enum ENUM_KeySize_
{
BIT128 = 0,
BIT192,
BIT256
}ENUM_KEYSIZE;
public:
AES( ENUM_KEYSIZE keysize, BYTE *key );
~AES(void);
void Cipher( BYTE *input, BYTE *output );
void InvCipher( BYTE *input, BYTE *output );
protected:
BYTE *RotWord( BYTE *word );
BYTE *SubWord( BYTE *word );
void AddRoundKey(int round);
void SubBytes();
void InvSubBytes();
void ShiftRows();
void InvShiftRows(