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

📄 tooldlg.cpp

📁 RSA公钥加密算法基于大整数因式分解困难这样的事实。 选择两个素数
💻 CPP
字号:
#include "stdafx.h"
#include "RsaKit.h"
#include "ToolDlg.h"

CToolDlg::CToolDlg(CWnd* pParent /*=NULL*/)
	: CDialog(CToolDlg::IDD, pParent)
{
	//{{AFX_DATA_INIT(CToolDlg)
	m_A = _T("");
	m_B = _T("");
	m_C = _T("");
	//}}AFX_DATA_INIT
}

void CToolDlg::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CToolDlg)
	DDX_Text(pDX, IDC_A, m_A);
	DDX_Text(pDX, IDC_B, m_B);
	DDX_Text(pDX, IDC_C, m_C);
	//}}AFX_DATA_MAP
}

BEGIN_MESSAGE_MAP(CToolDlg, CDialog)
	//{{AFX_MSG_MAP(CToolDlg)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()


BEGIN_EVENTSINK_MAP(CToolDlg, CDialog)
    //{{AFX_EVENTSINK_MAP(CToolDlg)
	ON_EVENT(CToolDlg, IDC_ADD, -600 /* Click */, OnClickAdd, VTS_NONE)
	ON_EVENT(CToolDlg, IDC_DEC, -600 /* Click */, OnClickDec, VTS_NONE)
	ON_EVENT(CToolDlg, IDC_DIV, -600 /* Click */, OnClickDiv, VTS_NONE)
	ON_EVENT(CToolDlg, IDC_EUC, -600 /* Click */, OnClickEuc, VTS_NONE)
	ON_EVENT(CToolDlg, IDC_HEX, -600 /* Click */, OnClickHex, VTS_NONE)
	ON_EVENT(CToolDlg, IDC_MOD, -600 /* Click */, OnClickMod, VTS_NONE)
	ON_EVENT(CToolDlg, IDC_MUL, -600 /* Click */, OnClickMul, VTS_NONE)
	ON_EVENT(CToolDlg, IDC_SUB, -600 /* Click */, OnClickSub, VTS_NONE)
	//}}AFX_EVENTSINK_MAP
END_EVENTSINK_MAP()

void CToolDlg::OnClickAdd() 
{
    UpdateData(TRUE);
	if((m_A.GetLength()>310)||(m_B.GetLength()>310))
	{
		m_C=_T("A、B不得大于310位");
		UpdateData(FALSE);
		return;
	}
	for(int i=0;i<m_A.GetLength();i++)
	{
		if((m_A[i]<'0')||(m_A[i]>'9'))
		{
			m_C=_T("A必须为0-9组成的整数");
			UpdateData(FALSE);
			return;
		}
	}
    A.Get(m_A,DEC);
	B.Get(m_B,DEC);
	C.Mov(A.Add(B));
	C.Put(m_C,DEC);
	UpdateData(FALSE);
    return;
}

void CToolDlg::OnClickSub() 
{
    UpdateData(TRUE);
	if((m_A.GetLength()>310)||(m_B.GetLength()>310))
	{
		m_C=_T("A、B不得大于310位");
		UpdateData(FALSE);
		return;
	}
	for(int i=0;i<m_A.GetLength();i++)
	{
		if((m_A[i]<'0')||(m_A[i]>'9'))
		{
			m_C=_T("A必须为0-9组成的整数");
			UpdateData(FALSE);
			return;
		}
	}
	A.Get(m_A,DEC);
	B.Get(m_B,DEC);
	if(A.Cmp(B)>=0)
	{
		C.Mov(A.Sub(B));
		C.Put(m_C,DEC);
	}
	else
	{
		C.Mov(B.Sub(A));
		C.Put(m_C,DEC);
		m_C.Insert(0,'-');
	}
	UpdateData(FALSE);
    return;
}

void CToolDlg::OnClickMul() 
{
    UpdateData(TRUE);
	if((m_A.GetLength()+m_B.GetLength())>310)
	{
		m_C=_T("A、B位数之和不得大于310");
		UpdateData(FALSE);
		return;
	}
	for(int i=0;i<m_A.GetLength();i++)
	{
		if((m_A[i]<'0')||(m_A[i]>'9'))
		{
			m_C=_T("A必须为0-9组成的整数");
			UpdateData(FALSE);
			return;
		}
	}
	A.Get(m_A,DEC);
	B.Get(m_B,DEC);	
	C.Mov(A.Mul(B));
	C.Put(m_C,DEC);
	UpdateData(FALSE);
    return;
}

void CToolDlg::OnClickDiv() 
{
    UpdateData(TRUE);
	if((m_A.GetLength()>310)||(m_B.GetLength()>310))
	{
		m_C=_T("A、B不得大于310位");
		UpdateData(FALSE);
		return;
	}
	for(int i=0;i<m_A.GetLength();i++)
	{
		if((m_A[i]<'0')||(m_A[i]>'9'))
		{
			m_C=_T("A必须为0-9组成的整数");
			UpdateData(FALSE);
			return;
		}
	}
	if((m_B=="0")||(m_B==""))
	{
		m_C=_T("B不得为0");
		UpdateData(FALSE);
		return; 
	}
	A.Get(m_A,DEC);
	B.Get(m_B,DEC);	
	C.Mov(A.Div(B));
	C.Put(m_C,DEC);
	UpdateData(FALSE);
    return;
}

void CToolDlg::OnClickMod() 
{
    UpdateData(TRUE);
	if((m_A.GetLength()>310)||(m_B.GetLength()>310))
	{
		m_C=_T("A、B不得大于310位");
		UpdateData(FALSE);
		return;
	}
	for(int i=0;i<m_A.GetLength();i++)
	{
		if((m_A[i]<'0')||(m_A[i]>'9'))
		{
			m_C=_T("A必须为0-9组成的整数");
			UpdateData(FALSE);
			return;
		}
	}
	if((m_B=="0")||(m_B==""))
	{
		m_C=_T("B不得为0");
		UpdateData(FALSE);
		return; 
	}
	A.Get(m_A,DEC);
	B.Get(m_B,DEC);	
	C.Mov(A.Mod(B));
	C.Put(m_C,DEC);
	UpdateData(FALSE);
    return;	
}

void CToolDlg::OnClickEuc() 
{
    UpdateData(TRUE);
	if((m_A.GetLength()>310)||(m_B.GetLength()>310))
	{
		m_C=_T("A、B不得大于310位");
		UpdateData(FALSE);
		return;
	}
	for(int i=0;i<m_A.GetLength();i++)
	{
		if((m_A[i]<'0')||(m_A[i]>'9'))
		{
			m_C=_T("A必须为0-9组成的整数");
			UpdateData(FALSE);
			return;
		}
	}
	A.Get(m_A,DEC);
	B.Get(m_B,DEC);	
	if(A.Cmp(B)<=0)
	{
		m_C=_T("B必须小于A");
		UpdateData(FALSE);
		return;
	}
	C.Mov(B.Euc(A));
	C.Put(m_C,DEC);
	UpdateData(FALSE);
    return;	
}

void CToolDlg::OnClickHex() 
{
    UpdateData(TRUE);
	if(m_A.GetLength()>310)
	{
		m_C=_T("A不得大于310位");
		UpdateData(FALSE);
		return;
	}
	for(int i=0;i<m_A.GetLength();i++)
	{
		if((m_A[i]<'0')||(m_A[i]>'9'))
		{
			m_C=_T("A必须为0-9组成的整数");
			UpdateData(FALSE);
			return;
		}
	}
	A.Get(m_A,DEC);
	A.Put(m_C,HEX);
	UpdateData(FALSE);
    return;	
}

void CToolDlg::OnClickDec() 
{
    UpdateData(TRUE);
	if(m_A.GetLength()>256)
	{
		m_C=_T("A不得大于256位");
		UpdateData(FALSE);
		return;
	}
	for(int i=0;i<m_A.GetLength();i++)
	{
		if((m_A[i]<'0')||
		   ((m_A[i]>'9')&&(m_A[i]<'A'))||
		   ((m_A[i]>'F')&&(m_A[i]<'a'))||
		   (m_A[i]>'f'))
		{
			m_C=_T("A必须为0-9或A-F或a-f组成的整数");
			UpdateData(FALSE);
			return;
		}
	}
	A.Get(m_A,HEX);
	A.Put(m_C,DEC);
	UpdateData(FALSE);
    return;		
}

⌨️ 快捷键说明

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