?? 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 + -