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

📄 dlgaes.cpp

📁 详细的AESRSASHA1实现原理
💻 CPP
字号:
// DlgEncrypt.cpp : implementation file
//

#include "stdafx.h"
#include "Cryptology.h"
#include "DlgAES.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// CDlgAES dialog

CDlgAES::CDlgAES(CWnd* pParent /*=NULL*/)
: CDialog(CDlgAES::IDD, pParent)
{
    //{{AFX_DATA_INIT(CDlgAES)
    m_strDecrypt= _T("");
    m_strCrypt  = _T("");	
    m_strMsg	= _T("");
	m_iKeySize  = 0;
	m_strKey    = _T("");
	m_iRound    = 0;
	//}}AFX_DATA_INIT
}


void CDlgAES::DoDataExchange(CDataExchange* pDX)
{
    CDialog::DoDataExchange(pDX);
    //{{AFX_DATA_MAP(CDlgAES)
    DDX_Text(pDX, IDC_EDIT_DECRYPT, m_strDecrypt);
    DDV_MaxChars(pDX, m_strDecrypt, 50000);
    DDX_Text(pDX, IDC_EDIT_CRYPTOGRAPH, m_strCrypt);
    DDV_MaxChars(pDX, m_strCrypt, 50000);
    DDX_Text(pDX, IDC_EDIT_MESSAGE, m_strMsg);
    DDV_MaxChars(pDX, m_strMsg, 50000);
	DDX_Text(pDX, IDC_EDIT_KEY_SIZE, m_iKeySize);
	DDX_Text(pDX, IDC_EDIT_KEY, m_strKey);
	DDX_Text(pDX, IDC_EDIT_ROUND, m_iRound);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CDlgAES, CDialog)
    //{{AFX_MSG_MAP(CDlgAES)
    ON_BN_CLICKED(IDC_BUTTON_ENCRYPT, OnButtonEncrypt)
    ON_BN_CLICKED(IDC_BUTTON_DECRYPT, OnButtonDecrypt)
    ON_EN_CHANGE(IDC_EDIT_MESSAGE, OnChangeEditMessage)
	ON_BN_CLICKED(IDC_BUTTON_GENERATE_RANDOM_KEY, OnButtonGenerateRandomKey)
    ON_WM_CREATE()
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CDlgAESEncrypt message handlers

BOOL CDlgAES::OnInitDialog() 
{
    CDialog::OnInitDialog();
    
    // TODO: Add extra initialization here
    char ch;
    FILE *fp = fopen("I have a dream.txt","r");
    while( (ch=fgetc(fp))!=EOF )
    {
        if( ch=='\n' )
            m_strMsg += '\r';
        m_strMsg += ch;
    }
    fclose(fp);

    m_iKeySize = m_AES.GetKeySize( )>>2;
    m_iRound   = m_AES.GetRound( );
    m_AES.GetRoundKey( 0, m_strKey );

    m_bEncrypt = false;
    m_bDecrypt = true;

    UpdateData(FALSE);
    
    return TRUE;  
}

void CDlgAES::OnChangeEditMessage() 
{	
    // TODO: Add your control notification handler code here
    m_bEncrypt = false;
}

void CDlgAES::OnButtonGenerateRandomKey() 
{
	// TODO: Add your control notification handler code here
    UpdateData(TRUE);

    m_AES.GenerateRandomKey( m_iKeySize<<2, m_iRound );
    m_AES.GetRoundKey( 0, m_strKey );
    m_bEncrypt = false;
    m_bDecrypt = true;

    UpdateData(FALSE);
}

void CDlgAES::OnButtonEncrypt() 
{
    // TODO: Add your control notification handler code here
    if( m_bEncrypt==true )  return;
    
    UpdateData(TRUE);

    m_AES.Encrypt( m_strMsg, m_strCrypt );
    m_bEncrypt = true;
    m_bDecrypt = false;
    
    UpdateData(FALSE);
}

void CDlgAES::OnButtonDecrypt( ) 
{
    // TODO: Add your control notification handler code here
    if( m_bDecrypt==true )  return;
    
    UpdateData(TRUE);

    m_AES.Decrypt( m_strCrypt, m_strDecrypt ); 
    m_bDecrypt = true; 
    
    UpdateData(FALSE);
}

⌨️ 快捷键说明

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