📄 mydlg1.cpp
字号:
// MyDlg1.cpp : implementation file
//
#include "stdafx.h"
#include "stdlib.h"
#include "bishe.h"
#include "MyDlg1.h"
#include "MyDlg3.h"
#include "BigInt.h"
#include "bisheDlg.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CMyDlg1 dialog
CMyDlg1::CMyDlg1(CWnd* pParent /*=NULL*/)
: CDialog(CMyDlg1::IDD, pParent)
{
//{{AFX_DATA_INIT(CMyDlg1)
m_P = _T("");
m_Q = _T("");
m_N = _T("");
m_E = _T("");
//}}AFX_DATA_INIT
}
void CMyDlg1::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CMyDlg1)
DDX_Control(pDX, IDC_klength_COMBO1, m_Len);
DDX_Text(pDX, IDC_EDITP, m_P);
DDX_Text(pDX, IDC_EDITQ, m_Q);
DDX_Text(pDX, IDC_EDITN, m_N);
DDX_Text(pDX, IDC_EDITE, m_E);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CMyDlg1, CDialog)
//{{AFX_MSG_MAP(CMyDlg1)
ON_BN_CLICKED(IDC_next_BUTTON2, OnnextBUTTON2)
ON_BN_CLICKED(IDC_create_BUTTON1, OncreateBUTTON1)
ON_BN_CLICKED(IDC_exit_BUTTON1, OnexitBUTTON1)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CMyDlg1 message handlers
void CMyDlg1::OnnextBUTTON2()
{
// TODO: Add your control notification handler code here
if(m_E=="")
{
AfxMessageBox("未产生密钥!");
}
else
{
OnOK();
m_MyDlg3.DoModal();
// CMyDlg1 m_MyDlg1;
// m_MyDlg1.DestroyWindow();
}
}
BOOL CMyDlg1::OnInitDialog()
{
CDialog::OnInitDialog();
// TODO: Add extra initialization here
// m_Len.AddString("32");
m_Len.AddString("256");
m_Len.AddString("512");
// m_Len.AddString("256");
m_Len.SelectString(-1,"256");
UpdateData(FALSE);
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
void CMyDlg1::OncreateBUTTON1()
{
// TODO: Add your control notification handler code here
srand(time(NULL));
ready=1;
ready_d=1;
ready_e=1;
UpdateData(true);
//int len=1;
CString slen;
GetDlgItemText(IDC_klength_COMBO1,slen); //获得用户选择的密钥长度
int len=atoi(slen)/32; //长度转化为0x100000000进制下长度
// for(int i=1;i<(atoi(slen)/32);i++) //转化成二进制
// {
// len*=2;
// }
P.Mov(62);//大数赋值 调用方式:N.Mov(A) 返回值:无,N被赋值为A
Q.Mov(62);
N.Mov(62);
E.Mov(62);
P.GetPrime(len/2);
Q.GetPrime(len/2);//产生P,Q
P.Put(m_P);
Q.Put(m_Q); //输出 P,Q
N.Mov(P.Mul(Q));
N.Put(m_N); //输出N
P.m_ulValue[0]--;
Q.m_ulValue[0]--;
P.Mov(P.Mul(Q)); //产生φ(n)=(p-1)(q-1)
E.GetPrime(len); //公钥
E.Put(m_E);//将大数按设定进制格式输出为字符串 调用格式:N.Put(str,sys)
// 返回值:无,参数str被赋值为N的sys进制字符串
//sys即进制数
D.Mov(E.Euc(P));//私钥
D.Put(g_SD);//私钥传递给全局变量,方便导出。
UpdateData(false);
GetDlgItemText(IDC_EDITP,g_SN);
GetDlgItemText(IDC_EDITE,g_SE);
// GetDlgItemText(IDC_EDITD,g_SD);
}
void CMyDlg1::OnexitBUTTON1()
{
// TODO: Add your control notification handler code here
OnCancel();
UpdateData(FALSE);
}
/*void CMyDlg1::OnKeyoutButton1()
{
// TODO: Add your control notification handler code here
FILE *fp;
unsigned int len;
char errMsg[200];
char filename[50];
char pkey[100];
char keyname[10]="key";
// char dir[100];
// GetCurrentDirectory(100,dir);
// strcat(dir,"\\Certification");
// CString Cdir(dir);
char dir[100];
char message[200]="密钥存放在:";
GetCurrentDirectory(100,dir);
strcat(message,dir);
strcat(message,"\\Certification");
CString Cdir(message);
wsprintf(filename,"%s%s%s","Certification\\",keyname,".key");
if((fp = fopen(filename,"w+")) == NULL)
{
memset(errMsg,0,200);
wsprintf(errMsg, "%s%s%s", "file ", filename, " can't open");
AfxMessageBox(errMsg);
return;
}
len = strlen(g_SD);
strcpy(pkey,g_SD);
pkey[len] = '\0';
if(fwrite(pkey, sizeof(char), len,fp) != len)
{
memset(errMsg, 0, 200);
wsprintf(errMsg, "%s%s%s", "write file ", filename, " fail");
AfxMessageBox(errMsg);
return;
}
AfxMessageBox(message);
fclose(fp);
}*/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -