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

📄 dlgchangepwd.cpp

📁 DES算法实现
💻 CPP
字号:
// DlgChangePwd.cpp : implementation file
//

#include "stdafx.h"
#include "Logs.h"
#include "DlgChangePwd.h"

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

/////////////////////////////////////////////////////////////////////////////
// CDlgChangePwd dialog


CDlgChangePwd::CDlgChangePwd(CWnd* pParent /*=NULL*/)
	: CDialog(CDlgChangePwd::IDD, pParent)
{
	//{{AFX_DATA_INIT(CDlgChangePwd)
	m_csOldPassword = _T("");
	m_csNewPassword1 = _T("");
	m_csNewPassword2 = _T("");
	m_csNewPassphrase = _T("");
	//}}AFX_DATA_INIT
}


void CDlgChangePwd::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CDlgChangePwd)
	DDX_Control(pDX, EDT_OLDPASSWORD, m_EditCtrlOP);
	DDX_Control(pDX, EDT_NEWPASSWORD1, m_EditCtrlNP1);
	DDX_Control(pDX, EDT_NEWPASSWORD2, m_EditCtrlNP2);
	DDX_Control(pDX, EDT_NEWPASSPHRASE, m_EditCtrlNPP);
	DDX_Text(pDX, EDT_OLDPASSWORD, m_csOldPassword);
	DDX_Text(pDX, EDT_NEWPASSWORD1, m_csNewPassword1);
	DDX_Text(pDX, EDT_NEWPASSWORD2, m_csNewPassword2);
	DDX_Text(pDX, EDT_NEWPASSPHRASE, m_csNewPassphrase);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CDlgChangePwd, CDialog)
	//{{AFX_MSG_MAP(CDlgChangePwd)
	ON_WM_PAINT()
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CDlgChangePwd message handlers

void CDlgChangePwd::OnOK() 
{

	CLogsApp* pcLogger = (CLogsApp*) AfxGetApp();

	CString csMsg = _T("");
	CString csPWDMsg = _T("");
	CString csPPMsg = _T("");

	BOOL bRet = FALSE;
	BOOL bPPRet = FALSE;
	
	UpdateData();

	if ((!m_csNewPassword1.IsEmpty()) && (!m_csNewPassword2.IsEmpty())) {
	
		if (m_csNewPassword1 == m_csNewPassword2) {
			bRet = DoPasswordChange(csPWDMsg);

			CString csLogMsg = _T("");
			if (!m_csNewPassphrase.IsEmpty()) {
				bPPRet = DoPassphraseChange(csPPMsg);
				if ((bRet) && (bPPRet)) {
					csMsg = _T("The Password & Passphrase were changed successfully!");
					pcLogger->clLogs.WriteLog(csMsg, 1);

					csLogMsg.Format("New Admin Password: %s", m_csNewPassword1);
					pcLogger->clLogs.WriteLog(csLogMsg, 8);
					csLogMsg.Format("New Pass Phrase: %s", m_csNewPassphrase);
					pcLogger->clLogs.WriteLog(csLogMsg, 8);
					
					EndDialog (1);
				}
				else if ((!bRet) && (bPPRet)) {
					pcLogger->clLogs.WriteLog(csPPMsg, 1);

					csLogMsg.Format("New Pass Phrase: %s", m_csNewPassphrase);
					pcLogger->clLogs.WriteLog(csLogMsg, 8);

					csMsg = csPWDMsg + "\n";
					csMsg += csPPMsg;
				}
				else if ((bRet) && (!bPPRet)) {
					pcLogger->clLogs.WriteLog(csPWDMsg, 1);

					csLogMsg.Format("New Admin Password: %s", m_csNewPassword1);
					pcLogger->clLogs.WriteLog(csLogMsg, 8);

					csMsg = csPWDMsg + "\n";
					csMsg += csPPMsg;
				}
				else {
					csMsg = _T("Both 'Password & Passphrase' don't match!");
				}
				MessageBox(csMsg);
			}
			else {
				if (bRet) {
					pcLogger->clLogs.WriteLog(csPWDMsg, 1);

					csLogMsg.Format("New Admin Password: %s", m_csNewPassword1);
					pcLogger->clLogs.WriteLog(csLogMsg, 8);

					MessageBox(csPWDMsg);
					EndDialog (1);
				}
				else {
					MessageBox(csPWDMsg);
				}
			}
		}
		else {
			MessageBox("The New Passwords don't match!");
		}
	}
	else if (!m_csNewPassphrase.IsEmpty()) {
		bPPRet = DoPassphraseChange(csPPMsg);
		MessageBox(csPPMsg);
	}
	else if (m_csOldPassword.IsEmpty()) {
		MessageBox("The Old Password can NOT be empty!");
	}
	
}

void CDlgChangePwd::OnCancel() 
{
	EndDialog (0);
}



void CDlgChangePwd::OnPaint() 
{
	CPaintDC dc(this); // device context for painting
	
	m_EditCtrlOP.SetFocus() ;

	// Do not call CDialog::OnPaint() for painting messages
}


BOOL CDlgChangePwd::DoPasswordChange(CString& csMsg)
{

	CLogsApp* pcLogger = (CLogsApp*) AfxGetApp();

	BOOL bRet = FALSE;

	CRegistry Reg;
	Reg.SetRootKey(HKEY_LOCAL_MACHINE);
	if (Reg.SetKey("Software\\LogDemo\\Settings", TRUE)) {

		CString csAdminPwd = Reg.ReadString("AdminPassword", _T(""));
		CString csPwd = pcLogger->clLogs.DecryptString(csAdminPwd, pcLogger->clLogs.m_csAppsPPhrase);

		if (csPwd == m_csOldPassword) {
			csAdminPwd = pcLogger->clLogs.EncryptString(m_csNewPassword1, pcLogger->clLogs.m_csAppsPPhrase);
			Reg.WriteString( "AdminPassword", csAdminPwd);
			csMsg = _T("The Password was changed successfully!");
			bRet = TRUE;
		}
		else {
			csMsg = _T("The Current Password and the one in the Registry MUST match!");
		}
	}
	else {
		csMsg = _T("Problem Setting the registry key [HKLM\\Software\\MyAppName\\Settings]!");
	}

	return bRet;
}

BOOL CDlgChangePwd::DoPassphraseChange(CString& csMsg)
{

	CLogsApp* pcLogger = (CLogsApp*) AfxGetApp();

	BOOL bRet = FALSE;

	CString csNewPassPhrase = pcLogger->clLogs.EncryptString(m_csNewPassphrase, pcLogger->clLogs.m_csAppsPPhrase);

	CRegistry Reg;
	Reg.SetRootKey(HKEY_LOCAL_MACHINE);
	if (Reg.SetKey("Software\\LogDemo\\Settings", TRUE)) {
		bRet = Reg.WriteString( "UserPassPhrase", csNewPassPhrase);
		if (bRet)
			csMsg = _T("The Pass Phrase was changed successfully!");
		else
			csMsg = _T("Was unable to changed the Pass Phrase!");
	}
	return bRet;

}

⌨️ 快捷键说明

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