2024-06-23 17:36:53 +08:00

172 lines
4.2 KiB
C++

// DecryptDataDlg.cpp : implementation file
//
#include "stdafx.h"
#include "DecryptData.h"
#include "DecryptDataDlg.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CDecryptDataDlg dialog
CDecryptDataDlg::CDecryptDataDlg(CWnd* pParent /*=NULL*/)
: CDialog(CDecryptDataDlg::IDD, pParent)
{
//{{AFX_DATA_INIT(CDecryptDataDlg)
// NOTE: the ClassWizard will add member initialization here
//}}AFX_DATA_INIT
m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
}
void CDecryptDataDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CDecryptDataDlg)
// NOTE: the ClassWizard will add DDX and DDV calls here
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CDecryptDataDlg, CDialog)
//{{AFX_MSG_MAP(CDecryptDataDlg)
ON_WM_PAINT()
ON_WM_CTLCOLOR()
ON_WM_QUERYDRAGICON()
ON_BN_CLICKED(IDOK1, OnOk1)
ON_BN_CLICKED(IDOK2, OnOk2)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CDecryptDataDlg message handlers
///颜色提示
void CDecryptDataDlg::LogOut(LPCSTR outtext)
{
int length = m_edit_log.GetWindowTextLength();
m_edit_log.SetSel(length, length);
m_edit_log.ReplaceSel (outtext);
}
HBRUSH CDecryptDataDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
int nCtrlID = pWnd->GetDlgCtrlID();
HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
if ((nCtrlID == IDC_EDIT1) ||(nCtrlID == IDC_EDIT2)&& (nCtlColor == CTLCOLOR_EDIT))
{
COLORREF clr = RGB(0,255,0);
pDC->SetTextColor(clr); //设置绿色的文本
clr = RGB(0,0,0);
pDC->SetBkColor(clr); //设置黑色的背景
hbr = CreateSolidBrush(clr); //作为约定,返回背景色对应的刷子句柄
}
return hbr;
}
BOOL CDecryptDataDlg::OnInitDialog()
{
CDialog::OnInitDialog();
SetIcon(m_hIcon, TRUE); // Set big icon
SetIcon(m_hIcon, FALSE); // Set small icon
SetDlgItemText(IDC_EDIT2,"1024");
// TODO: Add extra initialization here
return TRUE; // return TRUE unless you set the focus to a control
}
// If you add a minimize button to your dialog, you will need the code below
// to draw the icon. For MFC applications using the document/view model,
// this is automatically done for you by the framework.
void CDecryptDataDlg::OnPaint()
{
if (IsIconic())
{
CPaintDC dc(this); // device context for painting
SendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0);
// Center icon in client rectangle
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;
// Draw the icon
dc.DrawIcon(x, y, m_hIcon);
}
else
{
CDialog::OnPaint();
}
}
HCURSOR CDecryptDataDlg::OnQueryDragIcon()
{
return (HCURSOR) m_hIcon;
}
//加密字符串
void DecryptData(char *szRec, unsigned long nLen, unsigned long key)
{
unsigned long i;
unsigned char p;
p = (unsigned char ) key % 1451 + 61;
for(i = 0; i < nLen; i++)
{
*szRec -= p;
*szRec++ ^= p;
}
}
//解密字符串
void EncryptData(char*szRec, unsigned long nLen, unsigned long key) //解密插件
{
unsigned long i;
unsigned char p;
p = (unsigned char ) key % 1451 + 61;
for(i = 0; i < nLen; i++)
{
*szRec ^= p;
*szRec += p;
szRec++;
}
}
void CDecryptDataDlg::OnOk1()
{
CString cstr;
GetDlgItem(IDC_EDIT1)->GetWindowText(cstr); //获取编辑框要加密的内容
CString strText(_T(""));
GetDlgItemText(IDC_EDIT2, strText);
short val2 = _ttoi(strText); //获取编辑框key转整数型
const char* ch = (LPCTSTR)cstr; //CString转char
DecryptData((char *)ch,strlen(ch),val2); //加密
SetDlgItemText(IDC_EDIT1,ch); //显示加密内容
DWORD nr = strlen(ch);
if (nr == 0)
SetDlgItemText(IDC_STATIC1,"请输入要加密的内容...");
else
SetDlgItemText(IDC_STATIC1,"加密成功...");
}
void CDecryptDataDlg::OnOk2()
{
CString cstr;
GetDlgItem(IDC_EDIT1)->GetWindowText(cstr);
CString strText(_T(""));
GetDlgItemText(IDC_EDIT2, strText);
short val2 = _ttoi(strText);
const char* ch = (LPCTSTR)cstr;
EncryptData((char*)ch,strlen(ch),val2);
SetDlgItemText(IDC_EDIT1,ch);
DWORD nr = strlen(ch);
if (nr == 0)
SetDlgItemText(IDC_STATIC1,"请输入要解密的内容...");
else
SetDlgItemText(IDC_STATIC1,"解密成功...");
}