📄 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 + -