?? mixedcsdlg.cpp
字號:
// 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 + -