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

📄 mydlg1.cpp

📁 密钥的管理中心
💻 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 + -