?? aes1.h
字號:
#define BYTE unsigned char
#define DWORD long unsigned int
#define WORD short unsigned int
class Caes
{
//for test
public:
int Nk,Nb,Nr;
BYTE key[32]; //32=4*Nk(Nk=4,6,8)'s max
DWORD w[60]; //the round key's max 60=Nb*(Nr+1)'s max (Nb=4,Nr=10,12,14)
//in GF(2^8), add(),muply(),div()
BYTE add(BYTE x, BYTE y);
WORD add(WORD x, WORD y);
BYTE multiply(BYTE x, BYTE y);
WORD multiply(WORD x, WORD y);
BYTE div(BYTE x, BYTE y);
WORD div(WORD x, WORD y);
// extended Euclid's algorithm, return one byte's multiplitive inverse
void Update(WORD *un, WORD *vn, WORD q);
void eEuclid(BYTE *u);
// subByte and inverse subByte for one byte
void subByte(BYTE *u);
void invSubByte(BYTE *u);
// subDword() is a subByte for one Dword
void subDword(DWORD *u);
void rotDword(DWORD *u);
DWORD Rcon[15];
void KeyExpansion();
// used for Encipher()
BYTE row[8];//8= max of Nb(4 6 8), the array row[] used for temporary storage
BYTE column[4];//for mixcolumns()
void shiftRows(BYTE *u);
void invShiftRows(BYTE *u);
void mixColumns(BYTE *u);
void invMixColumns(BYTE *u);
void addRoundKey(BYTE *u , DWORD *ex);
public:
Caes(int Nk,int Nb, BYTE *inkey);
// Caes() is just for test
Caes();
void Encipher(BYTE *data);
void Decipher(BYTE *data);
};
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -