DES加密传输系统设计与实现

上传人:桔**** 文档编号:447289295 上传时间:2023-11-27 格式:DOCX 页数:23 大小:289.89KB
返回 下载 相关 举报
DES加密传输系统设计与实现_第1页
第1页 / 共23页
DES加密传输系统设计与实现_第2页
第2页 / 共23页
DES加密传输系统设计与实现_第3页
第3页 / 共23页
DES加密传输系统设计与实现_第4页
第4页 / 共23页
DES加密传输系统设计与实现_第5页
第5页 / 共23页
点击查看更多>>
资源描述

《DES加密传输系统设计与实现》由会员分享,可在线阅读,更多相关《DES加密传输系统设计与实现(23页珍藏版)》请在金锄头文库上搜索。

1、3DES加密传输系统设计与实现3.1引言在了解DES背景的前提下,以计算机高级语言C/C+为开发环境,设计并实现基于DES的文件加解密传输系统。3.2系统总体设计3.2.1设计目标和技术路线根据设计要求可知程序可分为两个部分。第一部分为利用DES对文件进行加密和解密,第二部分为传输文件。根据DES的加密原理和准则,需要构建一个密钥矩阵,利用密钥矩阵对文件完成加密过程,解密则是利用密钥矩阵完成加密的逆过程。第二部分初步的设计目标为编写一个点对点的传输系统,发送端利用IP直接查找接收端进行传输,接收端采取监听的方法接收发送端传输的文件。初步目标是以计算机高级语言为开发环境编写程序,则需要详细了解利

2、用计算机语言如何完成DES密钥矩阵,并实现加密过程。加密过程中涉及到文件的查找与保存,则需要详细了解如何利用计算机语言实现对文件的查找及保存功能。传输部分则以监听和利用IP查找目的计算机为核心。3.2.2功能需求分析和设计原则根据设计目标,程序需要完成以下功能。1拥有独立交互界面,交互界面包括传输,加密,解密三个主要部分;2对己知文件进行加密;3对己加密文件进行解密;4对己知文件进行传输。加解密功能部分要求能对一般文本文件及图片完成加密和解密,传输功能部分要求对一般文件完成进行点对点的快速传输。32.3系统的总体架构程序初步设计框图如图3-1所示。图3-1程序初步设计框图从设计图上可以看出程序

3、可以达到以下要求,程序的交互界面上,有加密,解密,传输3个主要部分。在任意端,能够对文件单独进行加密,或者对己加密文件进行解密。可以设置为发送端,向固定IP地址的接收端发送己加密文件或者普通文件。可以设置为接收端,接收发送端传输的加密文件或者普通文件。3.2.4交互界面设计根据程序的功能,交互界面应有以下几个部分。第1部分,密码输入窗口。包括两个输入栏,密码输入和再次输入密码,用户在这两栏中输入自己设定的密码即可。再次输入密码栏是为了避免操作失误而设置错误的密码,如图3-2。请输入密钥i青再次输入密钥图3-2密码输入界面第2部分,加密和解密的选择。包括两个可点击按钮,选择加密,系统进入加密状态

4、,如选择解密,系统进入解密状态,如图3-3。加密方式C加密C解密加密I图3-3加密解密选择界面第3部分,文件选择及保存部分。点击打开按钮,弹出选择路径,点击保存按钮,弹出保存路径。在加密状态下打开表示选择要加密的目标文件,保存表示为加密后文件的保存路径。在解密状态下,打开表示为选择要解密的文件,保存表示为解密后文件的保存路径,如图3-4。输入文件|打开|输出文件|保存|图3-4文件选择和保存界面第4部分,传输文件部分。点击作为客户端,具有发送功能,可在IP地址栏填写目标计算机IP地址,然后点击发送文件,弹出文件选择路径,选定文件后开始发送。点击作为服务器,具有接收功能,点击设置按钮即开始监听工

5、作,如图3-5。诗笔入目标主机的TP垃址1g发送文徉本炷说豆a作为股务器r作为客户塢图3-5数据传输界面3.3关键模块实现3.3.1交互界面交互界面模块主要有3个部分构成:加密部分、文件路径寻找部分、文件传输部分,其具体实现如下。#ifndefyxyDESH#definevxvDESH#include#include#include#includeusingnamespacestd;classvxvDESpublic:charszFCiphertextAnyLength8192;/任意长度密文(十/进制字符串)chaiszFPlaintextAnyLength4096;/任意长度明文字符串yx

6、yDESQ;类构造函数yxyDESQ;类析构函数voidInitializeKey(string);功能:产生16个28位的key参数:源8位的字符串(key)结果:函数将调用privateCieateSubKey将结果存于charSubKeys1648voidEncivptData(string);功能:加密8位字符串参数:8位字符串结果:函数将加密后结果存放于privateszCipheitext16/用户通过属性Cipheitext得到voidDeciyptData(stnng);功能:解密16位十六进制字符串参数:16位十六进制字符串结果:函数将解密候结果存放于privateszPla

7、intext8/用户通过属性Plaintext得到stnngBinaryToString(chai*,int,bool);功能:二进制串到字符串的转换,参数:源二进制字符串,二进制字符串长度,类型(true为二进制到hex,false为二进制到ANSCIIchai),结果:返回处理后结果voidEnciyptAnvLength(stnng);功能:加密任意长度字符串参数:任意长度字符串/结果:函数将力口密后结果存放于privateszFCiphertextAnvLength8192用户通过属性CipheitextAnvLength得到voidDeciyptAnvLength(stiing);功

8、能:解密任意长度十六进制字符串参数:任意长度字符串/结果:函数将力口密后结果存放于privateszFPlanitextAnvLength4096用户通过属性PlaintextAnyLength得到voidSetCiphertext(char*value);/Ciphertext的set函数char*GetCipheitext();/Ciphertext的get函数voidSetPlaintext(char*value);/Plaintext的set函数char*GetPlaintext();/Plaintext的get函数char*GetCiphertextAnyLengthO;/Ciphe

9、itextAnyLength的get函数char*GetPlaintextAnyLength();/PlaintextAnyLength的get函数private:chaiSubKeys1648;/储存16组48位密钥chaiszCipheitext16;/储存16位密文(十六进制字符串)charszPlaintext8;/储存8位明文字符串/chaiszFCipheitextAnvLengtli8192;/任意长度密文(十六进制字符串)/charszFPlaintextAnvLength4096;/任意长度明文字符串voidCreateSubKey(char*);功能:生成子密钥参数:经过P

10、C1变换的56位二进制字符串结果I将保存于chaiSubKeys1648voidFunctionF(char*,char*,int);功能DES中的F函数,参数:左32位,右32位,key序号(0-15)结果】均在变换左右32位voidInitialPeimuteData(string,chai*,bool);功能IP变换参数待处理字符串,处理后结果存放指针,加密/解密(true加密,false解密)结果:函数改变第二个参数的内容voidExpansionR(char*,chai*);功能:将右32位进行扩展位48位,参数:原32位字符串,扩展后结果存放指针结果:函数改变第二个参数的内容voi

11、dXOR(chai*,char*,int,cliar*);功能:异或函数,参数:待异或的操作字符串1,字符串2,操作数长度,处理后结果存放指针结果:函数改变第四个参数的内容stnngCompressFuncS(char*);功能:S-BOX,数据压缩,参数48位二进制字符串,结果:返回结果:32位字符串voidPeimutationP(stiing,char*);功能IP逆变换,参数:待变换字符串,处理后结果存放指针结果:函数改变第二个参数的内容stungFillToEightBits(stfing);功能:当明文不足8位,使用$进行填充,参数:原始字符串,结果:返回8位字符串voidClea

12、nPlaintextMark(int);将不足8位而补齐的明文处理还原函数将处理szFPlaintextAnyLength结果:例如123$处理后将变为123*0,stnngHexChaiToBinaiy(char);功能:16进制字符(O-F)到2进制字符串的转换参数汁六进制字符(O-F)结果:返回二进制字符串(”0000”1111”)stnngHexIntToBinary(int);功能:16进制整数(0-15)到2进制字符串的转换参数】十六进制整数(0-15)结果:返回二进制字符串(”0000”1111”)intSingleChaiToBinaiy(chai);功能:单个chaiO或T到

13、int0或1的变换/参数:O或T结果9或1charSingleBinaiyToChar(int);功能:将mt类型的0或1转换为chai类型的0或1参数0或1返回9或T;3.3.2传输传输模块主要由2个模块组成:发送模块和接收模块。发送模块实现如下:charszRecvPathMAX_PATH;charszSendPathMAX_PATH;SOCKETSSever;SOCKETSClient;BOOLCALLBACKDlgSendProc(HWNDhwnd,/handletodialogboxUINTuMsg,/messageWPARAMwPaiam,/fustmessagepaiameter

14、LPARAMIPaiam/secondmessageparameter);boolSevei(HWNDhwnd)WSADATAws;WSAStartup(MAKEWORD(2,2),&ws);SOCKETSockSevei=socket(AF_INET,SOCK_STREAM,0);structsockaddi_inmy_additlien_addf;my_addisin_poit=htons(830);my_addLsin_addr.S_un.S_addi=INADDR_ANY;my_addLsin_family=AF_INET;if(bind(SockSevei(stiuctsockaddr*)&my_addisizeof(stiuctsockaddr)MessageBox(NULL,n绑定失败”,”,MB_OK);letuinfalse;if(listen(SockSever910)MessageBox(NULL,监听失败”,”,MB_OK);letuinfalse;SetWindowText(hwnd,正在监听);intsize=sizeof(stiuctsockaddi_in);SSevei=accept(SockSevei(stiuc

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 商业/管理/HR > 商业计划书

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号