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

📄 crypt.txt

📁 包含MD5,SHA-1,DES,RSA的程序代码
💻 TXT
📖 第 1 页 / 共 5 页
字号:
void CEncryAndDecryptDlg::OnExit() 
{ 
CDialog::EndDialog(IDOK); 
} 

void CEncryAndDecryptDlg::OnHelp() 
{ 
CAboutDlg dlg; 
dlg.DoModal(); 
} 
//显示File模式面板 
void CEncryAndDecryptDlg::OnRadfile() 
{ 
//将字符串面板屏蔽 
ShowStringGroup(FALSE); 
MoveFileGroup(); 
//将文件面板所有控件显示 
ShowFileGroup(TRUE); 
//重新设置面板显示的位置 
CRect oRect, oRectDlg; 
CWnd* poWnd = GetDlgItem(IDC_EDITHEX1); 
poWnd->GetWindowRect(&oRect); 
GetWindowRect(&oRectDlg); 
SetWindowPos(NULL, 0, 0, oRectDlg.Width(), oRect.bottom-oRectDlg.top+15, SWP_NOMOVE|SWP_NOZORDER); 
m_iMode = FILE; 
} 

//显示String模式面板 
void CEncryAndDecryptDlg::OnRadstr() 
{ 
//将文件面板屏蔽 
ShowFileGroup(FALSE); 
MoveStringGroup(); 
//将字符串面板所有控件显示 
ShowStringGroup(TRUE); 
//重新设置字符串面板显示的位置 
CRect oRect, oRectDlg; 
CWnd* poWnd = GetDlgItem(IDC_EDITHEX2); 
poWnd->GetWindowRect(&oRect); 
GetWindowRect(&oRectDlg); 
SetWindowPos(NULL, 0, 0, oRectDlg.Width(), oRect.bottom-oRectDlg.top+15, SWP_NOMOVE|SWP_NOZORDER); 
m_iMode = STRING; 
} 
//显示File模式所对应的面板上的所有控件 
void CEncryAndDecryptDlg::ShowFileGroup(BOOL bShow) 
{ 
CWnd* poWnd; 
//显示各个控件 
poWnd = GetDlgItem(IDC_LBLFILE); 
poWnd->ShowWindow(bShow ? SW_SHOW : SW_HIDE); 
poWnd = GetDlgItem(IDC_EDITFILE); 
poWnd->ShowWindow(bShow ? SW_SHOW : SW_HIDE); 
poWnd = GetDlgItem(IDC_BTNFILE); 
poWnd->ShowWindow(bShow ? SW_SHOW : SW_HIDE); 
poWnd = GetDlgItem(IDC_STATICBMPARROW1); 
poWnd->ShowWindow(bShow ? SW_SHOW : SW_HIDE); 
poWnd = GetDlgItem(IDC_BTNFILEDIGEST); 
poWnd->ShowWindow(bShow ? SW_SHOW : SW_HIDE); 
poWnd = GetDlgItem(IDC_LBLSTR1); 
poWnd->ShowWindow(bShow ? SW_SHOW : SW_HIDE); 
poWnd = GetDlgItem(IDC_EDITSTR1); 
poWnd->ShowWindow(bShow ? SW_SHOW : SW_HIDE); 
poWnd = GetDlgItem(IDC_BTNSAVEAS); 
poWnd->ShowWindow(bShow ? SW_SHOW : SW_HIDE); 
poWnd = GetDlgItem(IDC_LBLHEX1); 
poWnd->ShowWindow(bShow ? SW_SHOW : SW_HIDE); 
poWnd = GetDlgItem(IDC_EDITHEX1); 
poWnd->ShowWindow(bShow ? SW_SHOW : SW_HIDE); 
} 


8)、主要的窗体类: 

// EncryAndDecryptDlg.h : header file 
// 

#if !defined(AFX_ENCRYANDDECRYPTDLG_H__DF1A4BD7_CD11_4F04_9D56_71AB1AA682C6__INCLUDED_) 
#define AFX_ENCRYANDDECRYPTDLG_H__DF1A4BD7_CD11_4F04_9D56_71AB1AA682C6__INCLUDED_ 

#if _MSC_VER > 1000 
#pragma once 
#endif // _MSC_VER > 1000 

#include "TransparentBitmap.h" 
#include "EditHex.h" 
#include "EditReadOnly.h" 
#include "EditSelect.h" 
#include "MD5.h" 
#include "DES.h" 
#include "Rsa.h" 

///////////////////////////////////////////////////////////////////////////// 
// CEncryAndDecryptDlg dialog 

class CEncryAndDecryptDlg : public CDialog 
{ 
// Construction 
public: 
CEncryAndDecryptDlg(CWnd* pParent = NULL); // standard constructor 

// Dialog Data 
//{{AFX_DATA(CEncryAndDecryptDlg) 
enum { IDD = IDD_ENCRYANDDECRYPT_DIALOG }; 
 // NOTE: the ClassWizard will add data members here 
//}}AFX_DATA 

// ClassWizard generated virtual function overrides 
//{{AFX_VIRTUAL(CEncryAndDecryptDlg) 
public: 
virtual BOOL PreTranslateMessage(MSG* pMsg); 
protected: 
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support 
//}}AFX_VIRTUAL 

// Implementation 
protected: 
HICON m_hIcon; 
void ShowFileGroup(BOOL bShow); 
void ShowStringGroup(BOOL bShow); 
void MoveFileGroup(); 
void MoveStringGroup(); 
BOOL ToPrimeNumber(CString szTemp); 
BOOL IsPrime(int x); 
// Generated message map functions 
//{{AFX_MSG(CEncryAndDecryptDlg) 
virtual BOOL OnInitDialog(); 
afx_msg void OnSysCommand(UINT nID, LPARAM lParam); 
afx_msg void OnPaint(); 
afx_msg HCURSOR OnQueryDragIcon(); 
afx_msg void OnExit(); 
afx_msg void OnHelp(); 
afx_msg void OnRadstr(); 
afx_msg void OnRadfile(); 
afx_msg void OnBtnfile(); 
afx_msg void OnBtnfiledigest(); 
afx_msg void OnBtnsaveas(); 
afx_msg void OnKickIdle(); 
afx_msg void OnSelchangeCombomethods(); 
afx_msg void OnRadalpha(); 
afx_msg void OnRadhex(); 
afx_msg void OnRaddecrypt(); 
afx_msg void OnRadencrypt(); 
afx_msg void OnBtnstringdigest(); 
//}}AFX_MSG 
afx_msg void OnUpdateBtnFileEncry(CCmdUI* pCmdUI); 
afx_msg void OnUpdateBtnStrEncry(CCmdUI* pCmdUI); 
afx_msg void OnUpdateBtnSaveAs(CCmdUI* pCmdUI); 
afx_msg void OnUpdateEditDES(CCmdUI* pCmdUI); 
afx_msg void OnUpdateEditP(CCmdUI* pCmdUI); 
afx_msg void OnUpdateEditQ(CCmdUI* pCmdUI); 
DECLARE_MESSAGE_MAP() 
private: 
int m_iRSAn; 
int m_iRSAe; 
enum {FILE = 0, STRING = 1};//对两种模式的定义 
enum {DES = 0, MD5 = 1,RSA = 2};//对使用的加密算法进行定义 
enum {ENCRYPT = 0, DECRYPT = 1};//对加密和解密进行定义 
int m_iMode;//模式变量 
int m_iMethod;//算法变量 
int m_iAction;//加密还是解密 
//颜色变量 
COLORREF m_oPlainFrg, m_oPlainBg, m_oPlainBg1; 
COLORREF m_oDigFrg, m_oDigBg, m_oDigBg1; 

CMenu m_oMenu;//菜单类,用于添加退出菜单 
CToolTipCtrl m_oToolTipCtrl;//提示信息类,主要是起到提示功能 
CTransparentBitmap m_oTransparentBitmap1,m_oTransparentBitmap2;//用于位图处理,使位图透明 
CBitmap m_oBMP1,m_oBMP2;//位图变量 
CEditSelect m_oEditDES;//IDC_EDITDES 
CEditSelect m_oEditP;//IDC_EDITP 
CEditSelect m_oEditQ;//IDC_EDITQ 
CEditSelect m_oEditFile; //IDC_EDITFILE 
CEditReadonly m_oEditStr1; //IDC_EDITSTR1 
CEditReadonly m_oEditHex1; //IDC_EDITHEX1 
CEditSelect m_oEditAlpha; //IDC_EDITALPHA 
CEditHex m_oEditHex; //IDC_EDITHEX 
CEditReadonly m_oEditStr2; //IDC_EDITSTR2 
CEditReadonly m_oEditHex2; //IDC_EDITHEX2 

//算法类 
CMD5 m_oMD5; 
CDES m_oDES; 
CRSA m_oRSA; 
}; 

//{{AFX_INSERT_LOCATION}} 
// Microsoft Visual C++ will insert additional declarations immediately before the previous line. 

#endif // !defined(AFX_ENCRYANDDECRYPTDLG_H__DF1A4BD7_CD11_4F04_9D56_71AB1AA682C6__INCLUDED_) 
// EncryAndDecryptDlg.cpp : implementation file 
// 

#include "stdafx.h" 
#include "EncryAndDecrypt.h" 
#include "EncryAndDecryptDlg.h" 
#include <shlwapi.h> 
#include <cmath> 

//动态加载库文件 
#pragma comment(lib,"shlwapi.lib") 

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

///////////////////////////////////////////////////////////////////////////// 
// CAboutDlg dialog used for App About 

class CAboutDlg : public CDialog 
{ 
public: 
CAboutDlg(); 

// Dialog Data 
//{{AFX_DATA(CAboutDlg) 
enum { IDD = IDD_ABOUTBOX }; 
//}}AFX_DATA 

// ClassWizard generated virtual function overrides 
//{{AFX_VIRTUAL(CAboutDlg) 
protected: 
virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV support 
//}}AFX_VIRTUAL 

// Implementation 
protected: 
//{{AFX_MSG(CAboutDlg) 
//}}AFX_MSG 
DECLARE_MESSAGE_MAP() 
}; 

CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD) 
{ 
//{{AFX_DATA_INIT(CAboutDlg) 
//}}AFX_DATA_INIT 
} 

void CAboutDlg::DoDataExchange(CDataExchange* pDX) 
{ 
CDialog::DoDataExchange(pDX); 
//{{AFX_DATA_MAP(CAboutDlg) 
//}}AFX_DATA_MAP 
} 

BEGIN_MESSAGE_MAP(CAboutDlg, CDialog) 
//{{AFX_MSG_MAP(CAboutDlg) 
 // No message handlers 
//}}AFX_MSG_MAP 
END_MESSAGE_MAP() 

///////////////////////////////////////////////////////////////////////////// 
// CEncryAndDecryptDlg dialog 
//使用构造函数对控件进行初始化 
CEncryAndDecryptDlg::CEncryAndDecryptDlg(CWnd* pParent /*=NULL*/) 
: CDialog(CEncryAndDecryptDlg::IDD, pParent),m_iAction(ENCRYPT),m_iMode(FILE),m_iMethod(DES), 
m_oPlainFrg(RGB(0,0,200)), m_oPlainBg(RGB(255,200,200)), m_oPlainBg1(RGB(100,200,100)), 
m_oDigFrg(RGB(0,130,0)), m_oDigBg(RGB(200,200,255)), m_oDigBg1(RGB(150,150,200)), 
m_oEditDES(RGB(20,20,100), RGB(150,200,200)),m_oEditP(RGB(20,20,100), RGB(150,200,200)),m_oEditQ(RGB(20,20,100), RGB(150,200,200)), 
m_oEditFile(m_oPlainFrg, m_oPlainBg), m_oEditStr1(m_oDigFrg, m_oDigBg), 
m_oEditHex1(m_oDigFrg, m_oDigBg),m_oEditAlpha(m_oPlainFrg, m_oPlainBg), 
m_oEditHex(m_oPlainFrg, m_oPlainBg1),m_oEditStr2(m_oDigFrg, m_oDigBg), 
m_oEditHex2(m_oDigFrg, m_oDigBg),m_iRSAe(0),m_iRSAn(0) 
{ 
//{{AFX_DATA_INIT(CEncryAndDecryptDlg) 
 // NOTE: the ClassWizard will add member initialization here 
//}}AFX_DATA_INIT 
// Note that LoadIcon does not require a subsequent DestroyIcon in Win32 
m_hIcon = AfxGetApp()->LoadIcon(IDR_TITLE);//显示小图标 
} 

void CEncryAndDecryptDlg::DoDataExchange(CDataExchange* pDX) 
{ 
CDialog::DoDataExchange(pDX); 
//{{AFX_DATA_MAP(CEncryAndDecryptDlg) 
 // NOTE: the ClassWizard will add DDX and DDV calls here 
//}}AFX_DATA_MAP 
} 

BEGIN_MESSAGE_MAP(CEncryAndDecryptDlg, CDialog) 
//{{AFX_MSG_MAP(CEncryAndDecryptDlg) 
ON_WM_SYSCOMMAND() 
ON_WM_PAINT() 
ON_WM_QUERYDRAGICON() 
ON_COMMAND(IDM_EXIT, OnExit) 
ON_COMMAND(IDM_HELP, OnHelp) 
ON_BN_CLICKED(IDC_RADSTR, OnRadstr) 
ON_BN_CLICKED(IDC_RADFILE, OnRadfile) 
ON_BN_CLICKED(IDC_BTNFILE, OnBtnfile) 
ON_BN_CLICKED(IDC_BTNFILEDIGEST, OnBtnfiledigest) 
ON_BN_CLICKED(IDC_BTNSAVEAS, OnBtnsaveas) 
ON_MESSAGE_VOID(WM_KICKIDLE, OnKickIdle) 
ON_CBN_SELCHANGE(IDC_COMBO_METHODS, OnSelchangeCombomethods) 
ON_BN_CLICKED(IDC_RADALPHA, OnRadalpha) 
ON_BN_CLICKED(IDC_RADHEX, OnRadhex) 
ON_BN_CLICKED(IDC_RADDECRYPT, OnRaddecrypt) 
ON_BN_CLICKED(IDC_RADENCRYPT, OnRadencrypt) 
ON_UPDATE_COMMAND_UI(IDC_BTNFILEDIGEST, OnUpdateBtnFileEncry) 
ON_UPDATE_COMMAND_UI(IDC_BTNSTRINGDIGEST, OnUpdateBtnStrEncry) 
ON_UPDATE_COMMAND_UI(IDC_BTNSAVEAS, OnUpdateBtnSaveAs) 
ON_UPDATE_COMMAND_UI(IDC_EDITDES, OnUpdateEditDES) 
ON_UPDATE_COMMAND_UI(IDC_EDITP, OnUpdateEditP) 
ON_UPDATE_COMMAND_UI(IDC_EDITQ, OnUpdateEditQ) 
ON_BN_CLICKED(IDC_BTNSTRINGDIGEST, OnBtnstringdigest) 
//}}AFX_MSG_MAP 
END_MESSAGE_MAP() 

///////////////////////////////////////////////////////////////////////////// 
// CEncryAndDecryptDlg message handlers ////////////////////////////////////////////////////////////////////////// 
/// 此处开始对C0,D0处理 
for(i=0; i<8; i++) 
{ 
 memset(tempByte, 0, 8); 
 //szKey为输入的密钥 
 char ch = szKey.GetAt(i); 
 if(ch&0x80) 
 { 
  AfxMessageBox("含有中文字符"); 
  return "FALSESTRING"; 
 } 
 for(int j=0; j<8; j++) 
 { 
  tempByte[j]=ch%2; 
  ch/=2; 
 } 
 for(j=7; j>=0; j--) 
 { 
  Key[i*8+7-j]=tempByte[j]; 
 } 
} 

for(i=0; i<28; i++) 
{ 
 KeyC0[i]=Key[PC1_Table[i]-1];   /// 获得c0共28位 
 KeyD0[i]=Key[PC1_Table[i+28]-1];  /// 获得d0共28位 
} 

////////////////////////////////////////////////////////////////////////// 
/// 此处开始16迭代算法 
isDecrypt=false; 
for(i=1; i<=16; i++) 
{ 
 Transform(i); 
} 

////////////////////////////////////////////////////////////////////////// 
// 最后一次生成的L16与R16调换位置装入密文字符串里 
int miwen[64]; 
memset(miwen, 0, 64); 
// 逆初始置换,真它MOTHER的麻烦! 
int mitmp[64]; 
memset(mitmp, 0, 64); 
for(i=0; i<32; i++) 
{ 
 mitmp[i]=R0[i]; 
 mitmp[32+i]=L0[i]; 
 //交换L0,R0的值 
 L0[i]=mitmp[i]; 
 R0[i]=mitmp[i+32]; 
} 

for(i=0; i<64; i++) 
{ 
 miwen[i]=mitmp[IPR_Table[i]-1]; 
} 
CString m_new="",str; 
for(i=0; i<8; i++) 
{ 
 int tmp=0; 
 tmp+=miwen[8*i]; 
 for(int j=1; j<8; j++) 
 { 
  tmp*=2; 
  tmp+=miwen[i*8+j]; 
 } 
 str.Format("%c", tmp); 
 m_new+=str; 
} 
return m_new; 
} 

//进行解密 
CString CDES::Decrypt() 
{ 
//重新开始16次迭代算法 
isDecrypt=true; 
int i; 
for(i=16; i>=1; i--) 
{ 
 Transform(i); 
} 
////////////////////////////////////////////////////////////////////////// 
// 最后一次生成的L16<->R16调换位置 
int minwen[64]; 
memset(minwen, 0, 64); 
// 逆初始置换 
int mintmp[64]; 
memset(mintmp, 0, 64); 

for(i=0; i<32; i++) 
{ 
 mintmp[i]=R0[i]; 
 mintmp[32+i]=L0[i]; 
} 

for(i=0; i<64; i++) 
{ 
 minwen[i]=mintmp[IPR_Table[i]-1]; 
} 

////////////////////////////////////////////////////////////////////////// 
// 将密文ASCII码放入编辑框里面去 
CString str,strResult = ""; 
for(i=0; i<8; i++) 
{ 
 int tmp=0; 
 tmp+=minwen[8*i]; 
 for(int j=1; j<8; j++) 
 { 
  tmp*=2; 
  tmp+=minwen[i*8+j]; 
 } 
 //将整形变量转化为CString也可以使用itoa来解决 
 str.Format("%c", tmp); 
 strResult += str; 
} 
return  strResult; 
} 

⌨️ 快捷键说明

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