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

📄 desdlg.cpp

📁 使用VC编程实现DES的加密与解密算法
💻 CPP
字号:
#include "stdafx.h"
#include "DES.h"
#include "DESDlg.h"
#include "Encrypt.h"

CDESDlg::CDESDlg(CWnd* pParent /*=NULL*/)
	: CDialog(CDESDlg::IDD, pParent)
{
	m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
}

void CDESDlg::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
}

BEGIN_MESSAGE_MAP(CDESDlg, CDialog)
	ON_WM_PAINT()
	ON_WM_QUERYDRAGICON()
	ON_BN_CLICKED(IDC_BUTTON_DECRYPT, OnButtonDecrypt)
	ON_BN_CLICKED(IDC_BUTTON_ENCRYPT, OnButtonEncrypt)
	ON_BN_CLICKED(IDC_BUTTON_OPENFILE, OnButtonOpenfile)
	ON_BN_CLICKED(IDC_BUTTON_SAVEFILE, OnButtonSavefile)
END_MESSAGE_MAP()

BOOL CDESDlg::OnInitDialog()
{
	CDialog::OnInitDialog();
    pEdit_MIWEN=(CEdit*)GetDlgItem(IDC_EDIT_MIWEN);
	pEdit_MINGWEN=(CEdit*)GetDlgItem(IDC_EDIT_MINGWEN);
    pEdit_MIYAO=(CEdit*)GetDlgItem(IDC_EDIT_MIYAO);
	pEdit_STATE=(CEdit*)GetDlgItem(IDC_STATIC_STATE);
	SetIcon(m_hIcon, TRUE);			// Set big icon
	SetIcon(m_hIcon, FALSE);		// Set small icon	
	return TRUE;  // return TRUE  unless you set the focus to a control
}

void CDESDlg::OnPaint() 
{
	if (IsIconic())
	{
		CPaintDC dc(this); // device context for painting

		SendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0);
		int cxIcon = GetSystemMetrics(SM_CXICON);
		int cyIcon = GetSystemMetrics(SM_CYICON);
		CRect rect;
		GetClientRect(&rect);
		int x = (rect.Width() - cxIcon + 1) / 2;
		int y = (rect.Height() - cyIcon + 1) / 2;
		dc.DrawIcon(x, y, m_hIcon);
		//File_openpath="c:\\mingwen.txt";
		//File_savepath="c:\\miwen.txt";
	}
	else
	{
		CDialog::OnPaint();
	}
}

HCURSOR CDESDlg::OnQueryDragIcon()
{
	return (HCURSOR) m_hIcon;
}

void CDESDlg::OnButtonDecrypt() 
{
	CFile readfile,writefile;
	char mingwen[8]="";
	char miwen[8]="";
	bool subkey[16][48];
	DWORD filelen;
	readfile.Open(File_openpath,CFile::modeCreate|CFile::modeRead);
	writefile.Open(File_savepath,CFile::modeCreate|CFile::modeWrite);


	char key[9]="11111111";
	char *k;
	CString str;
	pEdit_MIYAO->GetWindowText(str);
	if(str.GetLength()!=8)
	{
		MessageBox("您输入的不是八位密钥,程序将默认为八位");
	}
	k=str.GetBuffer(8);
	for(int j=0;j<8;j++)
	{
		key[j]=*k;
		k++;
	}


	Encrypt encrypt;
	encrypt.Des_CreateSubkey(key,subkey);
	
	filelen=readfile.GetLength();
	for(DWORD i=0;i<=filelen/8;i++)
	{
	    readfile.Read(&miwen,8);
	    encrypt.Des_Decrypt(mingwen,miwen,subkey);
        writefile.Write(&mingwen,8);
		mingwen[0]='\0';
		mingwen[1]='\0';
		mingwen[2]='\0';
		mingwen[3]='\0';
		mingwen[4]='\0';
		mingwen[5]='\0';
		mingwen[6]='\0';
		mingwen[7]='\0';
        miwen[0]='\0';
		miwen[1]='\0';
		miwen[2]='\0';
		miwen[3]='\0';
		miwen[4]='\0';
		miwen[5]='\0';
		miwen[6]='\0';
		miwen[7]='\0';
	}
    readfile.Close();
	writefile.Close();
    pEdit_STATE->SetWindowText("文件已经成功解密到指定文件");
}

void CDESDlg::OnButtonEncrypt() 
{
    CFile readfile,writefile;
	char mingwen[8]="";
	char miwen[8]="";
	bool subkey[16][48];
	DWORD filelen;
	readfile.Open(File_openpath,CFile::modeCreate|CFile::modeRead);
	writefile.Open(File_savepath,CFile::modeCreate|CFile::modeWrite);

    
	char key[9]="11111111";
	char *k;
	CString str;
	pEdit_MIYAO->GetWindowText(str);
	if(str.GetLength()!=8)
	{
		MessageBox("您输入的不是八位密钥,程序将默认为八位");
	}
	k=str.GetBuffer(8);
	for(int j=0;j<8;j++)
	{
		key[j]=*k;
		k++;
	}

	Encrypt encrypt;
	encrypt.Des_CreateSubkey(key,subkey);
  
	filelen=readfile.GetLength();
	for(DWORD i=0;i<=filelen/8;i++)
	{
	    readfile.Read(&mingwen,8);
	    encrypt.Des_Encrypt(miwen,mingwen,subkey);
        writefile.Write(&miwen,8);
		mingwen[0]='\0';
		mingwen[1]='\0';
		mingwen[2]='\0';
		mingwen[3]='\0';
		mingwen[4]='\0';
		mingwen[5]='\0';
		mingwen[6]='\0';
		mingwen[7]='\0';
        miwen[0]='\0';
		miwen[1]='\0';
		miwen[2]='\0';
		miwen[3]='\0';
		miwen[4]='\0';
		miwen[5]='\0';
		miwen[6]='\0';
		miwen[7]='\0';
	}
    readfile.Close();
	writefile.Close();
	pEdit_STATE->SetWindowText("文件已经成功加密到指定文件");
}

void CDESDlg::OnButtonOpenfile() 
{
	CFileDialog filedialog(TRUE);
	if(filedialog.DoModal()==IDOK)
	{
	    File_openpath=filedialog.GetPathName();
		pEdit_MINGWEN->SetWindowText(File_openpath);
	}   
}
void CDESDlg::OnButtonSavefile() 
{
	CFileDialog filedialog(FALSE);
	if(filedialog.DoModal()==IDOK)
	{
	    File_savepath=filedialog.GetPathName();
		pEdit_MIWEN->SetWindowText(File_savepath);
	}   
}

⌨️ 快捷键说明

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