📄 bigmuldlg.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 + -