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

📄 bigmuldlg.cpp

📁 非对称密码系统,包含RSA,ECC,大数乘法。
💻 CPP
字号:
// BigmulDlg.cpp : implementation file
//

#include "stdafx.h"
#include "ASYMMETRIC KEY CRYPTOSYSTEM.h"
#include "BigmulDlg.h"
#include "BigInt.h"

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

/////////////////////////////////////////////////////////////////////////////
// CBigmulDlg dialog


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


void CBigmulDlg::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CBigmulDlg)
	DDX_Text(pDX, IDC_A, m_A);
	DDX_Text(pDX, IDC_B, m_B);
	DDX_Text(pDX, IDC_C, m_C);
	DDX_Text(pDX, IDC_ALen, m_ALen);
	DDX_Text(pDX, IDC_BLen, m_BLen);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CBigmulDlg, CDialog)
	//{{AFX_MSG_MAP(CBigmulDlg)
	ON_BN_CLICKED(IDC_MUL, OnMul)
	ON_BN_CLICKED(IDC_GetPrime, OnGetPrime)
	ON_BN_CLICKED(IDC_introduceMUL, OnintroduceMUL)
	ON_BN_CLICKED(IDC_HelpMUL, OnHelpMUL)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CBigmulDlg message handlers

void CBigmulDlg::OnMul() 
{
	// TODO: Add your control notification handler code here
		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,10);
		B.Get(m_B,10);	
		C.Mov(A.Mul(B));
		C.Put(m_C,10);
		UpdateData(FALSE);
		return;
}

void CBigmulDlg::OnGetPrime() 
{
	// TODO: Add your control notification handler code here
		UpdateData(TRUE);
		if((m_ALen+m_BLen)>35)
		{
			m_C=_T("A与B的Bits位数之和不得大于35");
			UpdateData(FALSE);
			return;
		}
		if(m_ALen==0||m_BLen==0)
		{
			m_C=_T("A与B的Bits位数必须大于0");
			UpdateData(FALSE);
			return;
		}
		A.GetPrime(m_ALen);
		A.Put(m_A,10);
		B.GetPrime(m_BLen);
		B.Put(m_B,10);
		C.Mov(A.Mul(B));
		C.Put(m_C,10);
		UpdateData(FALSE);
		return;

}

void CBigmulDlg::OnintroduceMUL() 
{
	// TODO: Add your control notification handler code here
    m_introduceMUL.DoModal() == IDOK;
}

void CBigmulDlg::OnHelpMUL() 
{
	// TODO: Add your control notification handler code here
			m_C=_T("      你可以直接在A输入框和B输入框手动输入A和B的值(A、B位数之和不得大于310),然后点击“求手动输入的A与B的乘积”按钮即可在A*B框内获得A与B的乘积。你还可以在“随机数A的Bits位数:”内指定A和B的大小(A和B必须为正整数,A与B的Bits位数必须大于0,且A与B的Bits位数之和不得大于35),然后点击“求随机生成的A与B的乘积”随机生成A和B并求它们的乘积。");
			UpdateData(FALSE);
			return;	
}

⌨️ 快捷键说明

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