📄 aes.h
字号:
// AES.h: interface for the CAES class.
//
//////////////////////////////////////////////////////////////////////
#if !defined(AFX_AES_H__24F52477_C792_4EBA_9A24_E73DCAB1D5B6__INCLUDED_)
#define AFX_AES_H__24F52477_C792_4EBA_9A24_E73DCAB1D5B6__INCLUDED_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
#define MAX_AES_BLOCKS 1000
#define MAX_KEY_SIZE 32
#define MAX_ROUND 20
#define MAX_COL (MAX_KEY_SIZE>>2)
#define UN_SET_KEY_SIZE 1
#define UN_SET_ROUND 2
typedef BYTE AES_BLOCK[4][MAX_COL];
class CAES
{
private:
int m_iBlocks;
int m_iKeySize;
int m_iCol;
int m_iRound;
AES_BLOCK m_pBlocks[MAX_AES_BLOCKS];
public:
CAES();
virtual ~CAES();
private:
BYTE m_pSBox[16][16];
BYTE m_pInvSBox[16][16];
BYTE m_pMixColMatrix[4][4];
BYTE m_pInvMixColMatrix[4][4];
AES_BLOCK m_pRoundKey[MAX_ROUND+1];
private:
void TransMsgToBlocks( CString strMsg );
void TransBlocksToCryptInHex( CString& strCrypt );
void TransBlocksToDecrypt( CString& strDecrypt );
void EncryptBlock( AES_BLOCK b );
void DecryptBlock( AES_BLOCK b );
public:
int GetKeySize( );
int GetRound( );
void GenerateRandomKey( int iKeySize, int iRound );
void GetRoundKey( int iRound, CString& strKey );
void Encrypt( CString strMsg, CString& strCrypt );
void Decrypt( CString strCrypt, CString& strDecrypt );
private:
void TransKeyRow3( BYTE round, BYTE result[MAX_COL] );
BYTE GF256_IsBitTrue( BYTE n, BYTE pos );
BYTE GF256_GetHighBitPos( BYTE n );
BYTE GF256_Add( BYTE a, BYTE b );
BYTE GF256_Sub( BYTE a, BYTE b );
BYTE GF256_Mul( BYTE a, BYTE b );
BYTE GF256_Div( BYTE a, BYTE b );
BYTE GF256_Eculid_Inverse( BYTE b );
BYTE GF256_Affine( BYTE n );
BYTE GF256_Xtime( BYTE n );
void KeyExpansion();
void ValuedMixColMatrixAndInvMixColMatrix();
void GenerateSboxAndInvSBox();
void AddRoundKey( AES_BLOCK b, BYTE round );
void MixColumns( AES_BLOCK b );
void ShiftRows( AES_BLOCK b );
void SubBytes( AES_BLOCK b );
void InvAddRoundKey( AES_BLOCK b, BYTE round );
void InvMixColumns( AES_BLOCK b );
void InvShiftRows( AES_BLOCK b );
void InvSubBytes( AES_BLOCK b );
};
#endif // !defined(AFX_AES_H__24F52477_C792_4EBA_9A24_E73DCAB1D5B6__INCLUDED_)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -