DES源代码以及DES调试工具

源代码在线查看: des测试工具dlg.cpp

软件大小: 51 K
上传用户: flyhack007
关键词: DES 源代码 调试工具
下载地址: 免注册下载 普通下载 VIP

相关代码

				// DES测试工具Dlg.cpp : 实现文件
				//
				
				#include "stdafx.h"
				#include "DES测试工具.h"
				#include "DES测试工具Dlg.h"
				#include "yxyDES.h"
				
				#ifdef _DEBUG
				#define new DEBUG_NEW
				#endif
				
				
				// 用于应用程序“关于”菜单项的 CAboutDlg 对话框
				
				class CAboutDlg : public CDialog
				{
				public:
					CAboutDlg();
				
				// 对话框数据
					enum { IDD = IDD_ABOUTBOX };
				
					protected:
					virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV 支持
				
				// 实现
				protected:
					DECLARE_MESSAGE_MAP()
				};
				
				CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD)
				{
				}
				
				void CAboutDlg::DoDataExchange(CDataExchange* pDX)
				{
					CDialog::DoDataExchange(pDX);
				}
				
				BEGIN_MESSAGE_MAP(CAboutDlg, CDialog)
				END_MESSAGE_MAP()
				
				
				// CDES测试工具Dlg 对话框
				
				
				
				
				CDES测试工具Dlg::CDES测试工具Dlg(CWnd* pParent /*=NULL*/)
					: CDialog(CDES测试工具Dlg::IDD, pParent)
				{
					m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
				}
				
				void CDES测试工具Dlg::DoDataExchange(CDataExchange* pDX)
				{
					CDialog::DoDataExchange(pDX);
				}
				
				BEGIN_MESSAGE_MAP(CDES测试工具Dlg, CDialog)
					ON_WM_SYSCOMMAND()
					ON_WM_PAINT()
					ON_WM_QUERYDRAGICON()
					//}}AFX_MSG_MAP
					ON_BN_CLICKED(IDC_BUTTON_ENCRYPT, &CDES测试工具Dlg::OnBnClickedButtonEncrypt)
					ON_BN_CLICKED(IDC_BUTTON_DECRYPT, &CDES测试工具Dlg::OnBnClickedButtonDecrypt)
				END_MESSAGE_MAP()
				
				
				// CDES测试工具Dlg 消息处理程序
				
				BOOL CDES测试工具Dlg::OnInitDialog()
				{
					CDialog::OnInitDialog();
				
					// 将“关于...”菜单项添加到系统菜单中。
				
					// IDM_ABOUTBOX 必须在系统命令范围内。
					ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);
					ASSERT(IDM_ABOUTBOX < 0xF000);
				
					CMenu* pSysMenu = GetSystemMenu(FALSE);
					if (pSysMenu != NULL)
					{
						CString strAboutMenu;
						strAboutMenu.LoadString(IDS_ABOUTBOX);
						if (!strAboutMenu.IsEmpty())
						{
							pSysMenu->AppendMenu(MF_SEPARATOR);
							pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);
						}
					}
				
					// 设置此对话框的图标。当应用程序主窗口不是对话框时,框架将自动
					//  执行此操作
					SetIcon(m_hIcon, TRUE);			// 设置大图标
					SetIcon(m_hIcon, FALSE);		// 设置小图标
				
					// TODO: 在此添加额外的初始化代码
				
					return TRUE;  // 除非将焦点设置到控件,否则返回 TRUE
				}
				
				void CDES测试工具Dlg::OnSysCommand(UINT nID, LPARAM lParam)
				{
					if ((nID & 0xFFF0) == IDM_ABOUTBOX)
					{
						CAboutDlg dlgAbout;
						dlgAbout.DoModal();
					}
					else
					{
						CDialog::OnSysCommand(nID, lParam);
					}
				}
				
				// 如果向对话框添加最小化按钮,则需要下面的代码
				//  来绘制该图标。对于使用文档/视图模型的 MFC 应用程序,
				//  这将由框架自动完成。
				
				void CDES测试工具Dlg::OnPaint()
				{
					if (IsIconic())
					{
						CPaintDC dc(this); // 用于绘制的设备上下文
				
						SendMessage(WM_ICONERASEBKGND, reinterpret_cast(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);
					}
					else
					{
						CDialog::OnPaint();
					}
				}
				
				//当用户拖动最小化窗口时系统调用此函数取得光标显示。
				//
				HCURSOR CDES测试工具Dlg::OnQueryDragIcon()
				{
					return static_cast(m_hIcon);
				}
				
				
				void CDES测试工具Dlg::OnBnClickedButtonEncrypt()
				{
					// TODO: 在此添加控件通知处理程序代码
					CString Key,EncryptStr,DecryptStr,OutStr;           //定义CString类型变量,接收输入输出的字符
					string Skey,Sencryptstr,Soutstr;                    //定义string类型变量,调用DES算法函数时要用到,
					GetDlgItemText(IDC_EDIT_KEY,Key);                  //取加密KEY
				    GetDlgItemText(IDC_EDIT_ENCRYPT,EncryptStr);       //取待加密字符串
					if(Key.GetLength()					{
						MessageBox("请输入密钥及待加密字符串!");
						return;
					}
					
					Skey = (LPCTSTR)Key;                        //将KEY转换为string类型
					Sencryptstr = (LPCTSTR)EncryptStr;          //将待加密字符转换为string类型
					yxyDES* my_des = new yxyDES();              //继承DES类
					my_des->InitializeKey(Skey);                //KEY初始化,
				    my_des->EncryptAnyLength(Sencryptstr);      //调用加密函数
					Soutstr = my_des->GetCiphertextAnyLength(); //取加密值
					delete my_des;                              //删除继承类,以免内存泄漏
					OutStr = Soutstr.c_str();                   //将string类型的解密值转换为CString类型
					OutStr.MakeUpper();                         //小写转大写
					SetDlgItemText(IDC_EDIT_DECRYPT,OutStr);    //输出
				}
				
				void CDES测试工具Dlg::OnBnClickedButtonDecrypt()
				{
					// TODO: 在此添加控件通知处理程序代码
					CString Key,EncryptStr,DecryptStr,OutStr;          //定义CString类型变量,接收输入输出的字符
					string Skey,Sdecryptstr,Soutstr;                   //定义string类型变量,调用DES算法函数时要用到,
					GetDlgItemText(IDC_EDIT_KEY,Key);                  //取加密KEY
				    GetDlgItemText(IDC_EDIT_DECRYPT,DecryptStr);       //取待解密字符串
					if(Key.GetLength()					{
						MessageBox("请输入密钥及待解密字符串!");
						return;
					}
					
					Skey = (LPCTSTR)Key;                          //将KEY转换为string类型
					Sdecryptstr = (LPCTSTR)DecryptStr;            //将待解密字符转换为string类型
					yxyDES* my_des = new yxyDES();                //继承DES类
					my_des->InitializeKey(Skey);                  //KEY初始化
				    my_des->DecryptAnyLength(Sdecryptstr);        //调用解密函数
					Soutstr = my_des->GetPlaintextAnyLength();    //取解密值
					delete my_des;
					OutStr = Soutstr.c_str();                     //将string类型的输出值转换为CString类型
					SetDlgItemText(IDC_EDIT_ENCRYPT,OutStr);      //输出
				}
							

相关资源