DES加密源代码.docx

上传人:b****5 文档编号:3877203 上传时间:2022-11-26 格式:DOCX 页数:88 大小:27.60KB
下载 相关 举报
DES加密源代码.docx_第1页
第1页 / 共88页
DES加密源代码.docx_第2页
第2页 / 共88页
DES加密源代码.docx_第3页
第3页 / 共88页
DES加密源代码.docx_第4页
第4页 / 共88页
DES加密源代码.docx_第5页
第5页 / 共88页
点击查看更多>>
下载资源
资源描述

DES加密源代码.docx

《DES加密源代码.docx》由会员分享,可在线阅读,更多相关《DES加密源代码.docx(88页珍藏版)》请在冰豆网上搜索。

DES加密源代码.docx

DES加密源代码

//DES加密系统Dlg.cpp:

implementationfile

//

#include"math.h"

#include"stdafx.h"

#include"DES加密系统.h"

#include"DES加密系统Dlg.h"

#include

#include"Set_Table_Value.h"

#ifdef_DEBUG

#definenewDEBUG_NEW

#undefTHIS_FILE

staticcharTHIS_FILE[]=__FILE__;

#endif

/////////////////////////////////////////////////////////////////////////////

//CAboutDlgdialogusedforAppAbout

classCAboutDlg:

publicCDialog

{

public:

CAboutDlg();

//DialogData

//{{AFX_DATA(CAboutDlg)

enum{IDD=IDD_ABOUTBOX};

//}}AFX_DATA

//ClassWizardgeneratedvirtualfunctionoverrides

//{{AFX_VIRTUAL(CAboutDlg)

protected:

virtualvoidDoDataExchange(CDataExchange*pDX);//DDX/DDVsupport

//}}AFX_VIRTUAL

//Implementation

protected:

//{{AFX_MSG(CAboutDlg)

//}}AFX_MSG

DECLARE_MESSAGE_MAP()

};

CAboutDlg:

:

CAboutDlg():

CDialog(CAboutDlg:

:

IDD)

{

//{{AFX_DATA_INIT(CAboutDlg)

//}}AFX_DATA_INIT

}

voidCAboutDlg:

:

DoDataExchange(CDataExchange*pDX)

{

CDialog:

:

DoDataExchange(pDX);

//{{AFX_DATA_MAP(CAboutDlg)

//}}AFX_DATA_MAP

}

BEGIN_MESSAGE_MAP(CAboutDlg,CDialog)

//{{AFX_MSG_MAP(CAboutDlg)

//Nomessagehandlers

//}}AFX_MSG_MAP

END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////

//CDESDlgdialog

CDESDlg:

:

CDESDlg(CWnd*pParent/*=NULL*/)

:

CDialog(CDESDlg:

:

IDD,pParent)

{

//{{AFX_DATA_INIT(CDESDlg)

m_MINGWEN=_T("");

m_KEY=_T("");

m_MIWEN=_T("");

m_YUANWEN=_T("");

//}}AFX_DATA_INIT

//NotethatLoadIcondoesnotrequireasubsequentDestroyIconinWin32

m_hIcon=AfxGetApp()->LoadIcon(IDR_MAINFRAME);

}

voidCDESDlg:

:

DoDataExchange(CDataExchange*pDX)

{

CDialog:

:

DoDataExchange(pDX);

//{{AFX_DATA_MAP(CDESDlg)

DDX_Text(pDX,IDC_EDIT1,m_MINGWEN);

DDX_Text(pDX,IDC_EDIT2,m_KEY);

DDX_Text(pDX,IDC_EDIT3,m_MIWEN);

DDX_Text(pDX,IDC_EDIT4,m_YUANWEN);

//}}AFX_DATA_MAP

}

BEGIN_MESSAGE_MAP(CDESDlg,CDialog)

//{{AFX_MSG_MAP(CDESDlg)

ON_WM_SYSCOMMAND()

ON_WM_PAINT()

ON_WM_QUERYDRAGICON()

ON_BN_CLICKED(IDC_BUTTON1,On_Encrypt)

ON_BN_CLICKED(IDC_BUTTON2,On_Decrypt)

//}}AFX_MSG_MAP

END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////

//CDESDlgmessagehandlers

BOOLCDESDlg:

:

OnInitDialog()

{

CDialog:

:

OnInitDialog();

//Add"About..."menuitemtosystemmenu.

//IDM_ABOUTBOXmustbeinthesystemcommandrange.

ASSERT((IDM_ABOUTBOX&0xFFF0)==IDM_ABOUTBOX);

ASSERT(IDM_ABOUTBOX<0xF000);

CMenu*pSysMenu=GetSystemMenu(FALSE);

if(pSysMenu!

=NULL)

{

CStringstrAboutMenu;

strAboutMenu.LoadString(IDS_ABOUTBOX);

if(!

strAboutMenu.IsEmpty())

{

pSysMenu->AppendMenu(MF_SEPARATOR);

pSysMenu->AppendMenu(MF_STRING,IDM_ABOUTBOX,strAboutMenu);

}

}

//Settheiconforthisdialog.Theframeworkdoesthisautomatically

//whentheapplication'smainwindowisnotadialog

SetIcon(m_hIcon,TRUE);//Setbigicon

SetIcon(m_hIcon,FALSE);//Setsmallicon

//TODO:

Addextrainitializationhere

returnTRUE;//returnTRUEunlessyousetthefocustoacontrol

}

voidCDESDlg:

:

OnSysCommand(UINTnID,LPARAMlParam)

{

if((nID&0xFFF0)==IDM_ABOUTBOX)

{

CAboutDlgdlgAbout;

dlgAbout.DoModal();

}

else

{

CDialog:

:

OnSysCommand(nID,lParam);

}

}

//Ifyouaddaminimizebuttontoyourdialog,youwillneedthecodebelow

//todrawtheicon.ForMFCapplicationsusingthedocument/viewmodel,

//thisisautomaticallydoneforyoubytheframework.

voidCDESDlg:

:

OnPaint()

{

if(IsIconic())

{

CPaintDCdc(this);//devicecontextforpainting

SendMessage(WM_ICONERASEBKGND,(WPARAM)dc.GetSafeHdc(),0);

//Centericoninclientrectangle

intcxIcon=GetSystemMetrics(SM_CXICON);

intcyIcon=GetSystemMetrics(SM_CYICON);

CRectrect;

GetClientRect(&rect);

intx=(rect.Width()-cxIcon+1)/2;

inty=(rect.Height()-cyIcon+1)/2;

//Drawtheicon

dc.DrawIcon(x,y,m_hIcon);

}

else

{

CDialog:

:

OnPaint();

}

}

//Thesystemcallsthistoobtainthecursortodisplaywhiletheuserdrags

//theminimizedwindow.

HCURSORCDESDlg:

:

OnQueryDragIcon()

{

return(HCURSOR)m_hIcon;

}

voidCDESDlg:

:

On_Encrypt()//************点击加密按钮,执行加密操作

{

UpdateData();

GetDlgItemText(IDC_EDIT1,m_MINGWEN);//从明文框当中获得文本,并存于m_MINGWEN中

if(m_MINGWEN.GetLength()!

=8)//明文长度不合法时

{

SetDlgItemText(IDC_EDIT1,"请输入8位字符");

UpdateData();//一定别忘了刷新框中内容

}

else

{

//----------------------------——————————————————————————

//---------------------------------——————————————————————

GetDlgItemText(IDC_EDIT2,m_KEY);//从密钥框当中获得文本,并存于m_KEY中

if(m_KEY.GetLength()!

=8)//密钥位数不够时,清空密钥

{

SetDlgItemText(IDC_EDIT2,"");

UpdateData();//一定别忘了刷新框中内容

//break;

}

else//密钥合法时开始加密

{

K1_Born();//经过压缩换位,生成48位子密钥K1

K2_Born();

K3_Born();

K4_Born();

K5_Born();

K6_Born();

K7_Born();

K8_Born();

K9_Born();

K10_Born();

K11_Born();

K12_Born();

K13_Born();

K14_Born();

K15_Born();

K16_Born();

LR0_Born();//产生经初始换位的L0,R0

//DES_DIEDAI(L0,R0,K1);//密钥迭代过程

LR1_Born();

LR2_Born();

LR3_Born();

LR4_Born();

LR5_Born();

LR6_Born();

LR7_Born();

LR8_Born();

LR9_Born();

LR10_Born();

LR11_Born();

LR12_Born();

LR13_Born();

LR14_Born();

LR15_Born();

LR16_Born();

/**/

//开始逆初始换位

intR_replace[65],i,Result[65];//64位原文结果存放于Result中

for(i=1;i<33;i++)

{

R_replace[i]=R16[i];

R_replace[i+32]=L16[i];

}

for(i=1;i<65;i++)

Result[i]=R_replace[IP_1[i-1]];

//*************************************

FILE*fp;

fp=fopen("密文二进制表示.dat","w");//建立文件“密文二进制表示.dat”

for(i=1;i<65;i++)

fprintf(fp,"%d\n",Result[i]);

//fputc('\n',fp);

fclose(fp);

//下面准备把结果打入密文框~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

unsignedcharchar1,char2,char3,char4,char5,char6,char7,char8;

char1=Result[1]*128+Result[2]*64+Result[3]*32+Result[4]*16+Result[5]*8+Result[6]*4+Result[7]*2+Result[8];

char2=Result[9]*128+Result[10]*64+Result[11]*32+Result[12]*16+Result[13]*8+Result[14]*4+Result[15]*2+Result[16];

char3=Result[17]*128+Result[18]*64+Result[19]*32+Result[20]*16+Result[21]*8+Result[22]*4+Result[23]*2+Result[24];

char4=Result[25]*128+Result[26]*64+Result[27]*32+Result[28]*16+Result[29]*8+Result[30]*4+Result[31]*2+Result[32];

char5=Result[33]*128+Result[34]*64+Result[35]*32+Result[36]*16+Result[37]*8+Result[38]*4+Result[39]*2+Result[40];

char6=Result[41]*128+Result[42]*64+Result[43]*32+Result[44]*16+Result[45]*8+Result[46]*4+Result[47]*2+Result[48];

char7=Result[49]*128+Result[50]*64+Result[51]*32+Result[52]*16+Result[53]*8+Result[54]*4+Result[55]*2+Result[56];

char8=Result[57]*128+Result[58]*64+Result[59]*32+Result[60]*16+Result[61]*8+Result[62]*4+Result[63]*2+Result[64];

charResult_str[10]={char1,char2,char3,char4,char5,char6,char7,char8};//将结果转化为的字符串存入此集合

//printf("%s\n",Result_str);

CStrings=Result_str;

SetDlgItemText(IDC_EDIT3,s);

UpdateData();

}//输入都合法时执行

}

}

voidCDESDlg:

:

On_Decrypt()//************点击解密按钮,执行解密操作

{

/*UpdateData();

GetDlgItemText(IDC_EDIT3,m_MIWEN);//从密文框当中获得文本,并存于m_MIWEN中

if(m_MIWEN.GetLength()!

=8)//密文长度不合法时

{

SetDlgItemText(IDC_EDIT3,"请输入8位字符");

UpdateData();//一定别忘了刷新框中内容

}

else

{

*/GetDlgItemText(IDC_EDIT2,m_KEY);//从密钥框当中获得文本,并存于m_KEY中

if(m_KEY.GetLength()!

=8)//密钥位数不够时,清空密钥

{

SetDlgItemText(IDC_EDIT2,"");

UpdateData();//一定别忘了刷新框中内容

//break;

}

else//密钥合法时开始解密

{

K1_Born();//经过压缩换位,生成48位子密钥K1

K2_Born();

K3_Born();

K4_Born();

K5_Born();

K6_Born();

K7_Born();

K8_Born();

K9_Born();

K10_Born();

K11_Born();

K12_Born();

K13_Born();

K14_Born();

K15_Born();

K16_Born();

LR0_Encrypt();//输入的密文经初始换位的L0,R0

LR1_Decry();

LR2_Decry();

LR3_Decry();

LR4_Decry();

LR5_Decry();

LR6_Decry();

LR7_Decry();

LR8_Decry();

LR9_Decry();

LR10_Decry();

LR11_Decry();

LR12_Decry();

LR13_Decry();

LR14_Decry();

LR15_Decry();

LR16_Decry();

//&&&&&&&&&@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

//开始逆初始换位

intR_replace[65],i,Result[65];//64位原文结果存放于Result中

for(i=1;i<33;i++)

{

R_replace[i]=R16[i];

R_replace[i+32]=L16[i];

}

for(i=1;i<65;i++)

Result[i]=R_replace[IP_1[i-1]];

//下面准备把结果打入原文框

unsignedcharchar1,char2,char3,char4,char5,char6,char7,char8;

char1=Result[1]*128+Result[2]*64+Result[3]*32+Result[4]*16+Result[5]*8+Result[6]*4+Result[7]*2+Result[8];

char2=Result[9]*128+Result[10]*64+Result[11]*32+Result[12]*16+Result[13]*8+Result[14]*4+Result[15]*2+Result[16];

char3=Result[17]*128+Result[18]*64+Result[19]*32+Result[20]*16+Result[21]*8+Result[22]*4+Result[23]*2+Result[24];

char4=Result[25]*128+Result[26]*64+Result[27]*32+Result[28]*16+Result[29]*8+Result[30]*4+Result[31]*2+Result[32];

char5=Result[33]*128+Result[34]*64+Result[35]*32+Result[36]*16+Result[37]*8+Result[38]*4+Result[39]*2+Result[40];

char6=Result[41]*128+Result[42]*64+Result[43]*32+Result[44]*16+Result[45]*8+Result[46]*4+Result[47]*2+Result[48];

char7=Result[49]*128+Result[50]*64+Result[51]*32+Result[52]*16+Result[53]*8+Result[54]*4+Result[55]*2+Result[56];

char8=Result[57]*128+Result[58]*64+Result[59]*32+Result[60]*16+Result[61]*8+Result[62]*4+Result[63]*2+Result[64];

charResult_str[10]={char1,char2,char3,char4,char5,char6,char7,char8};//将结果转化为的字符串存入此集合

CStrings=Result_str;

SetDlgItemText(IDC_EDIT4,s);

UpdateData();

}

//}

}

voidCDESDlg:

:

MINGWEN_ERJINZHI()//*********明文二进制

{

FILE*fp;

charch;

staticinti,j,str[8];

fp=fopen("明文二进制表示.dat","w");//建立文件“明文二

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 小学教育 > 数学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1