?? aes.h
字號(hào):
#pragma once
class AES
{
public:
AES(void);
~AES(void);
Bit m_Key[4*Nk];//起始密鑰
Word m_KeyW[(EncryptionRounds+1)*Nb];//以字為單位存儲(chǔ)擴(kuò)展密鑰
Bit m_KeyB[(EncryptionRounds+1)*Nb/4][4][4];//以字節(jié)為單位存儲(chǔ)擴(kuò)展密鑰
Word m_Rcon[(EncryptionRounds+1)*Nb/Nk];//輪常數(shù)
Bit SDataSource[16][16];//S盒數(shù)據(jù)源
bool m_first;//起始輪變量
int m_last;//結(jié)束輪變量
Word m_InputW[4];//以字為單位存儲(chǔ)輸入變量
Bit m_InputB[4][4];//以字節(jié)為單位存儲(chǔ)輸入變量
Bit m_Current[4][4];//Square為單位存儲(chǔ)當(dāng)前變量
Bit logTable[16][16];//對(duì)數(shù)表
Bit InvLogTable[16][16];//反對(duì)數(shù)表
Bit InvSDataSource[16][16];//反S盒數(shù)據(jù)源
Word m_CodeW[4];//以字為單位存儲(chǔ)存儲(chǔ)密文
Word m_ClearW[4];//存儲(chǔ)明文
Bit m_CodeB[4][4];//以字節(jié)為單位存儲(chǔ)明文
void KeyExpansion(Bit key[4*Nk], Word w[(EncryptionRounds+1)*Nb]);//擴(kuò)展密鑰
void Encrypt(void);//加密算法
void InvEncrypt(void);//解密算法
Word RotWord(Word& w);//循環(huán)位移
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);//以字節(jié)為單位抑或
void xor(Bit bit1[4][4],Bit bit2[4][4]);//Square為單位抑或
void WordToBit(const Word w,Bit bit[4]);//把字轉(zhuǎn)換為字節(jié)
void BitToWord(const Bit bit[4],Word& w);//字節(jié)轉(zhuǎn)換為字
void ShiftRows(Bit bit[4][4]);//行位移運(yùn)算
void InvShiftRows(Bit bit[4][4]);//反行位移運(yùn)算
Bit Ffmul(Bit bit1,Bit bit2);//乘法運(yùn)算
void MixColumns(Bit state[4][4]);//列混合運(yùn)算
void InvMixColumns(Bit state[4][4]);//反列混合運(yùn)算
};
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -