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

📄 mixedcsdlg.cpp

📁 经典算法全集:DES算法
💻 CPP
📖 第 1 页 / 共 2 页
字号:
// MCSDlg.cpp : implementation file
//

#include "stdafx.h"
#include "MixedCS.h"
#include "MixedCSDlg.h"
#include "RsaKeyDlg.h"
#include "MyFileDialog.h"
#include "AboutDlg.h"
#include "Window.h"
#include "GfL.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
extern  CMixedCSApp         theApp;
#define CHECK(x)			{if( !(x) ) return;}
#define CHECK_MSG(x,msg)	{if( !(x) ){CWindow::ShowMessage(msg);return;}}

/////////////////////////////////////////////////////////////////////////////
// CMixedCSDlg dialog

CMixedCSDlg::CMixedCSDlg(CWnd* pParent /*=NULL*/)
	: CDialog(CMixedCSDlg::IDD, pParent)
{
	//{{AFX_DATA_INIT(CMixedCSDlg)
	m_input = _T("");
	m_output = _T("");
	m_deskey = _T("");
	m_rsakey = _T("");
	m_rsamod = _T("");
	m_defpath = _T("");
	m_deskey2 = _T("");
	//}}AFX_DATA_INIT
	// Note that LoadIcon does not require a subsequent DestroyIcon in Win32
	m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
	CBitmap bmp;
	srand(GetTickCount());
	bmp.LoadBitmap(IDB_BKBITMAP1+(theApp.bk_mainui=rand()%5));
	m_BkBrush = CreatePatternBrush ((HBITMAP)bmp.GetSafeHandle()) ;
	bmp.DeleteObject();

    credit="                                                              "
           "                                    "
		   "欢迎使用《精灵混合加密系统》当前版本1.0   "  
		   "东北大学信息科学与工程学院  安全与保密小组制作  组长:0200935 王俊川"
		   "  成员:0200950 原常青  0200980 胡德华  0201005 刘红旗  0200906 高志刚  "
		   "    声明:该系统源代码开放,但版权归本小组成员所有,您可以随意使用,传播。"
		   "但禁止用于商业用途。谢谢使用!   王俊川 2003年2月10号于东大学生城";
}

void CMixedCSDlg::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CMixedCSDlg)
	DDX_Text(pDX, IDC_Input, m_input);
	DDX_Text(pDX, IDC_Output, m_output);
	DDX_Text(pDX, IDC_DesKey, m_deskey);
	DDV_MaxChars(pDX, m_deskey, 16);
	DDX_Text(pDX, IDC_RsaKey, m_rsakey);
	DDV_MaxChars(pDX, m_rsakey, 600);
	DDX_Text(pDX, IDC_RsaMod, m_rsamod);
	DDV_MaxChars(pDX, m_rsamod, 600);
	DDX_Text(pDX, IDC_DefPath, m_defpath);
	DDX_Text(pDX, IDC_DesKey2, m_deskey2);
	DDV_MaxChars(pDX, m_deskey2, 16);
	//}}AFX_DATA_MAP
}

BEGIN_MESSAGE_MAP(CMixedCSDlg, CDialog)
	//{{AFX_MSG_MAP(CMixedCSDlg)
	ON_BN_CLICKED(IDC_InputRsaKey, OnInputRsaKey)
	ON_BN_CLICKED(IDC_Run, OnRun)
	ON_BN_CLICKED(IDC_GetRsaKey, OnGetRsaKey)
	ON_BN_CLICKED(IDC_Browse, OnBrowse)
	ON_BN_CLICKED(ID_EXIT, OnExit)
	ON_WM_CTLCOLOR()
	ON_WM_QUERYDRAGICON()
	ON_BN_CLICKED(IDC_Open, OnOpen)
	ON_BN_CLICKED(IDC_InputRsaMod, OnInputRsaMod)
	ON_WM_TIMER()
	ON_EN_CHANGE(IDC_RsaKey, OnChangeRsaKey)
	ON_EN_CHANGE(IDC_RsaMod, OnChangeRsaMod)
	ON_BN_CLICKED(IDC_MCSRADIO, OnMcsradio)
	ON_BN_CLICKED(IDC_DESRADIO, OnDesradio)
	ON_BN_CLICKED(IDC_DefFolder, OnDefFolder)
	ON_BN_CLICKED(IDC_OutFolder, OnOutFolder)
	ON_BN_CLICKED(IDC_DefPathCHECK, OnDefPathCHECK)
	ON_BN_CLICKED(IDC_Use3DESCHECK, OnUse3DESCHECK)
	ON_BN_CLICKED(IDC_DelEptFileCHECK, OnDelEptFileCHECK)
	ON_BN_CLICKED(IDC_DelOrgFileCHECK, OnDelOrgFileCHECK)
	ON_BN_CLICKED(IDC_DelNoteCHECK, OnDelNoteCHECK)
	ON_BN_CLICKED(IDC_ABOUT, OnAbout)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CMixedCSDlg message handlers

BOOL CMixedCSDlg::OnInitDialog()
{
	CDialog::OnInitDialog();

	// Set the icon for this dialog.  The framework does this automatically
	//  when the application's main window is not a dialog
	SetIcon(m_hIcon, TRUE);			// Set big icon
	SetIcon(m_hIcon, FALSE);		// Set small icon

	// TODO: Add extra initialization here

	// Init Envrionment
	run_type = ENCRYPT;

    m_defpath = theApp.GetProfileString("InOut","DefPath","");

	usedefpath = theApp.GetProfileInt("InOut","IfUseDefPath",0)?true:false;
	if( usedefpath )
	{
		CheckDlgButton(IDC_DefPathCHECK,BST_CHECKED);
		EnableDefPathCtls(true);
	}

	use3des = theApp.GetProfileInt("MCS","IfUse3DES",0)?true:false;
	if( use3des )
		CheckDlgButton(IDC_Use3DESCHECK,BST_CHECKED);

	delnote = theApp.GetProfileInt("Option","IfDelNote",1)?true:false;
	if( delnote )
		CheckDlgButton(IDC_DelNoteCHECK,BST_CHECKED);
	delorgfile = theApp.GetProfileInt("Option","IfDelOrgFile",0)?true:false;
	if( delorgfile )
		CheckDlgButton(IDC_DelOrgFileCHECK,BST_CHECKED);
	deleptfile = theApp.GetProfileInt("Option","IfDelEptFile",0)?true:false;
	if( deleptfile )
		CheckDlgButton(IDC_DelEptFileCHECK,BST_CHECKED);

	oldformat = format = theApp.GetProfileInt("Option","Format",MCS)?true:false;
	CheckRadioButton(IDC_MCSRADIO,IDC_DESRADIO,IDC_MCSRADIO);
	if( format == DES )
	{
		CheckRadioButton(IDC_MCSRADIO,IDC_DESRADIO,IDC_DESRADIO);
		EnableDesCtls(true);
		EnableMcsCtls(false);
	}
	UpdateData(false);

    SetTimer(1,400,NULL);

	return TRUE;  // return TRUE  unless you set the focus to a control
}
HCURSOR CMixedCSDlg::OnQueryDragIcon()
{
	return (HCURSOR) m_hIcon;
}
HBRUSH CMixedCSDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) 
{
	HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);

	// TODO: Change any attributes of the DC here
	if ( (nCtlColor==CTLCOLOR_EDIT) ||
		 (nCtlColor==CTLCOLOR_DLG)  ||
		 (nCtlColor==CTLCOLOR_STATIC) )
	{
		pDC->SetBkMode (TRANSPARENT);
		if( nCtlColor==CTLCOLOR_STATIC )
			pDC->SetTextColor(RGB(0,0,255));
		hbr = m_BkBrush;
	}
	// TODO: Return a different brush if the default is not desired
	return hbr;
}
void CMixedCSDlg::OnTimer(UINT nIDEvent) 
{
	// TODO: Add your message handler code here and/or call default
	CGfL::RotateL(credit.GetBuffer(0),credit.GetLength(),2);
	SetDlgItemText(IDC_Credit,credit.Left(100));

	CDialog::OnTimer(nIDEvent);
}

void CMixedCSDlg::OnOK() 
{
	OnExit();
}
void CMixedCSDlg::OnCancel() 
{
	OnExit();
}
void CMixedCSDlg::OnExit() 
{
	// TODO: Add your control notification handler code here
	CHECK( IDYES==MessageBox("真的要退出该程序吗? ","提示",MB_YESNO | MB_ICONQUESTION) )

	UpdateData(true);
    theApp.WriteProfileString("InOut","DefPath",m_defpath);
	theApp.WriteProfileInt("InOut","IfUseDefPath",usedefpath);
	theApp.WriteProfileInt("MCS","IfUse3DES",use3des);
	theApp.WriteProfileInt("Option","IfDelNote",delnote);
	theApp.WriteProfileInt("Option","IfDelOrgFile",delorgfile);
	theApp.WriteProfileInt("Option","IfDelEptFile",deleptfile);
	theApp.WriteProfileInt("Option","Format",format);

	DeleteObject(m_BkBrush);
	CDialog::OnOK();

	CAboutDlg  dlg;
	dlg.DoModal();
}

void CMixedCSDlg::OnBrowse() 
{
	// TODO: Add your control notification handler code here
	CString Filter= "所有文件(*.*)|*.*|文本文件(*.txt)|*.txt|"
		            "混合加密文件(*.mcs)|*.mcs|DES加密文件(*.des)|*.des||";

	CMyFileDialog FileDlg (TRUE, NULL, NULL, OFN_HIDEREADONLY, Filter);
	CHECK( FileDlg.DoModal() == IDOK )

	UpdateData(true);
	m_input = FileDlg.GetPathName();
	m_output = "";
	UpdateData(false);

	run_type  = DECRYPT;
	EnableFormatCtls(false);
	EnableDesCtls(false);
	EnableMcsCtls(false);
	SetDlgItemText(IDC_Run,"解密");
	if( m_input.Find(".mcs")>0 || m_input.Find(".MCS")>0 )
	{
		oldformat = format;
		format    = MCS;
		BuildOutputFileName();
		EnableMcsCtls(true);
	}
	else if( m_input.Find(".des")>0 || m_input.Find(".DES")>0 )
	{
		oldformat = format;
		format    = DES;
		BuildOutputFileName();
		EnableDesCtls(true);
	}
	else
	{
		run_type = ENCRYPT;
		format   = oldformat;
		BuildOutputFileName();
		SetDlgItemText(IDC_Run,"加密");

		EnableFormatCtls(true);
		if( format == DES )
			EnableDesCtls(true);
		else
			EnableMcsCtls(true);
	}
}
void CMixedCSDlg::BuildOutputFileName()
{
	UpdateData(true);
	if( m_input.IsEmpty() )
	{
		m_output = "";
		UpdateData(false);
		return;
	}

	CString path= (usedefpath && !m_defpath.IsEmpty()) ? m_defpath : CWindow::GetPath(m_input); 
	CString name= CWindow::GetFileNameNoExt( m_output.IsEmpty() ? m_input : m_output );
	CString ext = CWindow::GetExtName(m_input);
	CString newext = (run_type==DECRYPT) ? "" : (format==MCS) ? "mcs" : "des";

	if( path.GetAt( path.GetLength()-1 ) != '\\' )
		path += "\\";
	if( run_type==DECRYPT )
		if( ext.GetLength()>4 && ext.GetAt(ext.GetLength()-4)=='.' )
			ext = ext.Left( ext.GetLength()-4 );
		else
			ext = "";

	m_output = path + name;

⌨️ 快捷键说明

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