⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 aes1.h

📁 这是一个关于AES加密的算法类库
💻 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 + -