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

📄 aes.h

📁 自编高级加密算法体制AES
💻 H
字号:
#pragma once

class AES
{
public:
	AES(void);
	~AES(void);
	Bit m_Key[4*Nk];//起始密钥
	Word m_KeyW[(EncryptionRounds+1)*Nb];//以字为单位存储扩展密钥
	Bit m_KeyB[(EncryptionRounds+1)*Nb/4][4][4];//以字节为单位存储扩展密钥
	Word m_Rcon[(EncryptionRounds+1)*Nb/Nk];//轮常数
	Bit SDataSource[16][16];//S盒数据源
	bool m_first;//起始轮变量
	int m_last;//结束轮变量
	Word m_InputW[4];//以字为单位存储输入变量
	Bit m_InputB[4][4];//以字节为单位存储输入变量
	Bit m_Current[4][4];//Square为单位存储当前变量
	Bit logTable[16][16];//对数表
	Bit InvLogTable[16][16];//反对数表
	Bit InvSDataSource[16][16];//反S盒数据源
	Word m_CodeW[4];//以字为单位存储存储密文
	Word m_ClearW[4];//存储明文
	Bit m_CodeB[4][4];//以字节为单位存储明文

	void KeyExpansion(Bit key[4*Nk], Word w[(EncryptionRounds+1)*Nb]);//扩展密钥
	void Encrypt(void);//加密算法
	void InvEncrypt(void);//解密算法
	Word RotWord(Word& w);//循环位移
	Bit SubBypes(Bit &b);//S盒置换
	Bit InvSubBypes(Bit &b);//反S盒置换
	Word SubWord(Word &w);//以字为单位S盒置换
	Word xor(Word x,Word y);//以字为单位抑或
	Bit xor(Bit x,Bit y);//以字节为单位抑或
	void xor(Bit bit1[4][4],Bit bit2[4][4]);//Square为单位抑或
	void WordToBit(const Word w,Bit bit[4]);//把字转换为字节
	void BitToWord(const Bit bit[4],Word& w);//字节转换为字
	void ShiftRows(Bit bit[4][4]);//行位移运算
	void InvShiftRows(Bit bit[4][4]);//反行位移运算
	Bit Ffmul(Bit bit1,Bit bit2);//乘法运算
	void MixColumns(Bit state[4][4]);//列混合运算
	void InvMixColumns(Bit state[4][4]);//反列混合运算
};

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -