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

📄 tool.cpp

📁 这个vc++代码实现了RSA
💻 CPP
字号:
// Tool.cpp : 实现文件
//

#include "stdafx.h"
#include "RSA.h"
#include "Tool.h"
#include ".\tool.h"


// CTool 对话框

IMPLEMENT_DYNAMIC(CTool, CDialog)
CTool::CTool(CWnd* pParent /*=NULL*/)
	: CDialog(CTool::IDD, pParent)
	, m_A(_T(""))
	, m_B(_T(""))
	, m_C(_T(""))
{
}

CTool::~CTool()
{
}

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


BEGIN_MESSAGE_MAP(CTool, CDialog)
	ON_BN_CLICKED(IDC_ADD, OnBnClickedAdd)
	ON_BN_CLICKED(IDC_DEC, OnBnClickedDec)
	ON_BN_CLICKED(IDC_DIV, OnBnClickedDiv)
	ON_BN_CLICKED(IDC_EUC, OnBnClickedEuc)
	ON_BN_CLICKED(IDC_HEX, OnBnClickedHex)
	ON_BN_CLICKED(IDC_MOD, OnBnClickedMod)
	ON_BN_CLICKED(IDC_MUL, OnBnClickedMul)
	ON_BN_CLICKED(IDC_SUB, OnBnClickedSub)
END_MESSAGE_MAP()


// CTool 消息处理程序

void CTool::OnBnClickedAdd()//大数加法
{
	// TODO: 在此添加控件通知处理程序代码
   UpdateData(TRUE);
   if(m_A.GetLength()>310||m_B.GetLength()>310)
   {
        m_C=_T("A、B不得大于310位");
		UpdateData(FALSE);
		return;
   }
   if(m_A.GetLength()==0||m_B.GetLength()==0)
   {
        m_C=_T("请输入两个大数");
		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 CTool::OnBnClickedDec()
{
	// TODO: 在此添加控件通知处理程序代码
	 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;
		}
	}
	if(m_A.GetLength()==0)
   {
        m_C=_T("请输入大数A");
		UpdateData(FALSE);
		return;
   }
	A.Get(m_A,HEX);
	A.Put(m_C,DEC);
	UpdateData(FALSE);
    return;		

}

void CTool::OnBnClickedDiv()//大数除法
{
	// TODO: 在此添加控件通知处理程序代码
	UpdateData(TRUE);
   if(m_A.GetLength()>310||m_B.GetLength()>310)
   {
        m_C=_T("A、B不得大于310位");
		UpdateData(FALSE);
		return;
   }
   if(m_A.GetLength()==0&&m_B.GetLength()==0)
   {
        m_C=_T("请输入两个大数");
		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(m_B=='0')
	{
            m_C=_T("B不能为0");
			UpdateData(FALSE);
			return;
			
	}
	C.Mov(A.Div(B));
    C.Put(m_C,DEC);
     UpdateData(FALSE);
    return;

}

void CTool::OnBnClickedEuc()
{
	// TODO: 在此添加控件通知处理程序代码
  UpdateData(TRUE);
   if(m_A.GetLength()>310||m_B.GetLength()>310)
   {
        m_C=_T("A、B不得大于310位");
		UpdateData(FALSE);
		return;
   }
   if(m_A.GetLength()==0&&m_B.GetLength()==0)
   {
        m_C=_T("请输入两个大数");
		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(m_A=='0')
	{
            m_C=_T("A不能为0");
			UpdateData(FALSE);
		    return;		
	}
	C.Mov(B.Euc(A));
    C.Put(m_C,DEC);
     UpdateData(FALSE);
    return;

}

void CTool::OnBnClickedHex()
{
	// TODO: 在此添加控件通知处理程序代码
	
    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;
		}
	}
	if(m_A.GetLength()==0)
   {
        m_C=_T("请输入大数A");
		UpdateData(FALSE);
		return;
   }
	A.Get(m_A,DEC);
	A.Put(m_C,HEX);
	UpdateData(FALSE);
    return;	
}

void CTool::OnBnClickedMod()//大数取余
{
	// TODO: 在此添加控件通知处理程序代码
	UpdateData(TRUE);
   if(m_A.GetLength()>310||m_B.GetLength()>310)
   {
        m_C=_T("A、B不得大于310位");
		UpdateData(FALSE);
		return;
   }
   if(m_A.GetLength()==0&&m_B.GetLength()==0)
   {
        m_C=_T("请输入两个大数");
		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(m_B=='0')
	{
            m_C=_T("B不能为0");
			UpdateData(FALSE);
			return;
			
	}
	C.Mov(A.Mod(B));
    C.Put(m_C,DEC);
    UpdateData(FALSE);
    return;
	

}

void CTool::OnBnClickedMul()//大数乘法
{
	// TODO: 在此添加控件通知处理程序代码
	UpdateData(TRUE);
   if(m_A.GetLength()>310||m_B.GetLength()>310)
   {
        m_C=_T("A、B不得大于310位");
		UpdateData(FALSE);
		return;
   }
   if(m_A.GetLength()==0&&m_B.GetLength()==0)
   {
        m_C=_T("请输入两个大数");
		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 CTool::OnBnClickedSub()//大数减法
{
	UpdateData(TRUE);
   if(m_A.GetLength()>310||m_B.GetLength()>310)
   {
        m_C=_T("A、B不得大于310位");
		UpdateData(FALSE);
		return;
   }
   if(m_A.GetLength()==0||m_B.GetLength()==0)
   {
        m_C=_T("请输入两个大数");
		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组成的整数");
			C.Put(m_C,DEC);
			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;
	// TODO: 在此添加控件通知处理程序代码
}

⌨️ 快捷键说明

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