基于DES算法的图像加密传输的实现_第1页
基于DES算法的图像加密传输的实现_第2页
基于DES算法的图像加密传输的实现_第3页
基于DES算法的图像加密传输的实现_第4页
基于DES算法的图像加密传输的实现_第5页
已阅读5页,还剩48页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、班 级 011031 学 号 01103012 本科毕业设计论文 题 目 基于DES算法的图像加密传输的实现 学 院 通信工程学院 专 业 信息安全 学生姓名 * 导师姓名 * 摘 要 I摘 要随着互联网的普及和发展,越来越多的人们选择使用网络作为信息交流的渠道,网络传输在人们的工作和生活中显得越来越重要。在此过程中,如何保证信息传输的安全性逐渐成为热点问题。在此背景下,本文设计了一个基于DES算法的图像加密传输系统。DES数据加密算法是一种对称加密算法,在文件加密方面有着广泛的应用。DES算法通过对加密组块反复使用替代和换位两种技术得到密文,安全性高且易于实现。本文首先简要介绍了 DES 算

2、法的原理和流程,以及VC+网络编程基础,在此基础上基于MFC编程实现了一个图像加密传输系统。该传输系统分为发送端和接收端两部分,通过TCP协议来进行连接和通信。最后对该系统进行了测试,测试结果表明,它能够实现文件的加密传输,并能正确的进行解密,保证传输信息的安全性。关键词:DES算法 VC+ Socket编程 图像加密传输 Abstract 随着互联网的普及,国内外各公司企业的发展壮大和这些企业和公司在办公中更加频繁的使用网络作为公司信息交流的渠道,网络传输在人们的工作和生活中得到了充足的发展。在此过程中,如何保证信息传输的安全性逐渐成为热点问题。With the development of

3、 Internet, more and more people communicate with each other through the Internet, network becomes more and more important in the peoples work and daily life. In this process, how to ensure the security of the transmission information has become a hot issue. 在此背景下,本文设计了一个基于DES算法的图像加密传输系统。数据加密算法(DES)是

4、一种对称加密算法,在文件加密方面有着广泛的应用。DES对二元数据进行加密的算法,通过反复使用加密组块替代和换位两种技术得到密文,安全性高且易于实现。本文首先简要介绍了 DES 算法的原理和流程,分析设计了用 VC+ 实现 DES 加解密的核心算法,在此基础上制作完成了一个文件加密传输系统。网络文件远程传输系统分为服务器端和客户端两部分,通过TCP协议来进行连接和通信。Under this background, this paper designs an encryption transmission system based on DES algorithm. Data Encryption

5、 Standard (DES) is a symmetric encryption algorithm that was widely used in file encryption. DES algorithm gets the ciphertext by the repeated use of substitution and transposition of the encryption block, has the advantage of high security and easy implementation. The principle and process of DES a

6、lgorithm and the basis of VC+ network programming are firstly introduced, based on this an image encryption transmission system is realized with the help of MFC. This transmission system includes two parts: the server and the client, they communicate with each other based on TCP protocol. Finally, t

7、he software is tested, the result shows that, the sender can encrypt the image, and then transmit it to the receiver. The receiver can decode the image correctly, the security of the image is ensured during the transmission.关键词:DES算法 VC+ Socket编程 文件加密传输Keywords: Data Encryption Standard algorithm VC

8、+ Socket programming Image encryption transmission 目录 III目 录第一章 绪论11.1图像加密传输系统概述11.2 加密算法简介11.3 DES加密算法21.3.1 算法产生背景及其现状21.3.2 算法原理和特点31.3.3 主要功能及应用领域31.4 传输系统概述41.4.1 国内外研究现状41.4.2 开发工具51.4.3 传输系统设计61.5本文主要内容安排和研究框架6第二章 DES加/解密模块的实现92.1加密部分92.1.1 加密流程92.1.2加密演示172.2 解密部分192.2.1 解密流程192.2.2 解密演示19第三

9、章 传输系统模块的实现213.1 传输系统基础知识213.1.1 所需协议213.1.2 C/S架构223.1.3 Windows Socket编程基础243.2 传输系统实现步骤253.2.1 系统总体架构263.2.2 发送端的实现263.2.3 接收端的实现30第四章 交互界面设计334.1 交互界面开发工具介绍334.2 交互界面功能块划分334.2.1 发送端部分334.2.2 接收端部分344.3 交互界面详细设计34第五章 软件测试375.1 测试环境375.2 基本功能测试37第六章 总结和展望416.1 论文工作总结416.2 加密传输系统应用展望42致谢43参考文献45 第

10、一章 绪论 9第一章 绪论1.1图像加密传输系统概述网络传输技术的快速发展,方便了我们的日常生活,加快了工作效率,增进了信息交流。网络传输的出现确实给我们带来了很多的便利,但网络传输的安全问题也在时时困扰着我们。现在木马,病毒、黑客,各种威胁之声不断传出,网络传输的安全问题也就成为了社会关注的重点问题。文件传输安全就是大众关注的安全问题之一,一份文件可能包含了很多的机密,一旦被黑客窃取,那损失是不可想象的。所以下面我们来谈谈文件加密的相关技术问题。加密在网络上的作用就是防止有用或私有化信息在网络上被拦截和窃取。我们知道在互联网上进行文件传输、电子邮件商务往来存在许多不安全因素,特别是对于一些大

11、公司和一些机密文件在网络上传输,对传输过程中的安全性要求更高。而且这种不安全性是互联网存在基础TCP/IP协议所固有的,包括一些基于TCP/IP的服务;所以为了保证安全,我们必须给文件加密。本文针对以上问题,设计了一个基于DES算法的图像加密传输系统。1.2 加密算法简介数据加密的基本过程就是对原来为明文的文件或数据按某种算法进行处理,使其成为不可读的一段代码,通常称为“密文”,使其只能在输入相应的密钥之后才能显示出本来内容,通过这样的途径来达到保护数据不被非法人窃取、阅读的目的1。 该过程的逆过程为解密,即将该编码信息转化为其原来数据的过程。加密技术通常分为两大类:“对称式”和“非对称式”。

12、对称式加密就是加密和解密使用同一个密钥,通常称之为“Session Key ”这种加密技术现在被广泛采用,如美国政府所采用的DES加密标准就是一种典型的“对称式”加密法,它的Session Key长度为56bits。非对称式加密就是加密和解密所使用的不是同一个密钥,通常有两个密钥,称为“公钥”和“私钥”,它们两个必需配对使用,否则不能打开加密文件。这里的“公钥”是指可以对外公布的,“私钥”则不能,只能由持有人一个人知道。它的优越性就在这里,因为对称式的加密方式,如果是在网络上传输加密文件就很难不把密钥告诉对方,不管用什么方法都有可能被别窃听到。而非对称式的加密方法有两个密钥,且其中的“公钥”是

13、可以公开的,也就不怕别人知道,收件人解密时只要用自己的“私钥”即可以,这样就很好地避免了密钥的传输安全性问题2。常见的加密算法有DES,EDEA国际数据加密算法,AES,RSA,MD5等。由于DES加密算法密钥较短,加解密速度快,适用于加密大量数据的场合且加密处理简单,因此本文采用DES作为加密算法。1.3 DES加密算法数据加密算法DES是一种对称加密算法,很可能是使用最广泛的密钥系统,特别是在保护金融数据的安全中,最初开发的DES是嵌入硬件中的。通常,自动取款机(Automated Teller Machine,ATM)都使用DES。它出自IBM的研究工作,IBM也曾对它拥有几年的专利权,

14、但是在1983年已到期后,处于公有范围中,允许在特定条件下可以免除专利使用费而使用,后来被美国政府正式采纳3。1.3.1 算法产生背景及其现状DES是Data Encryption Standard(数据加密标准)的缩写。它是由IBM公司在1971年设计出的一个加密算法,美国国家标准局(NBS)于1977年公布把它作为非机要部门使用的数据加密标准。DES自从公布以来,已成为金融界及其他各种行业最广泛应用的对称密钥密码系统。DES是分组密码的典型代表,也是第一个被公布出来的标准算法。原来规定DES算法的使用期为10年,可能是DES尚未受到严重威胁,更主要是新的数据加密标准研制工作尚未完成,或意见

15、尚未统一,所以当时的美国政府宣布延长它的使用期,因而DES超期服役到2000年。近三十年来,尽管计算机硬件及破解密码技术的发展日新月异,若撇开DES的密钥太短,易于被使用穷举密钥搜寻法找到密钥的攻击法不谈,直到进入20世纪90年代以后,以色列的密码学家Shamir等人提出一种“差分分析法”,以后日本人也提出了类似的方法,这才称得上对它有了攻击的方法。严格地说Shamir的“差分分析法”也只是理论上的价值。至少到目前为止是这样,比如后来的“线形逼迫法”,它是一种已知明文攻击,需要约4.398×1012个明、密文对,在这样苛刻的要求下,还要付出很大的代价才能解出一个密钥。不管是差分攻击还

16、是线性攻击法,对于DES的安全性也仅仅只做到了“质疑”的地步并未从根本上破解DES。也就是说,若是能用类似Triple-DES或是DESX的方式加长密钥长度,仍不失为一个安全的密码系统4。1.3.2 算法原理和特点其入口参数有三个:key、data、mode。key为加密解密使用的密钥,data为加密解密的数据,mode为其工作模式。当模式为加密模式时,明文按照64位进行分组,形成明文组,key用于对数据加密;当模式为解密模式时,key用于对数据解密。实际运用中,密钥只用到了64位中的56位,这样才具有高的安全性。算法特点5:分组比较短、密钥太短、密码生命周期短、运算速度较慢。DES算法具有极

17、高安全性,到目前为止,除了用穷举搜索法对DES算法进行攻击外,还没有发现更有效的办法。而56位长的密钥的穷举空间为2的56次方,这意味着如果一台计算机的速度是每一秒钟检测一百万个密钥,则它搜索完全部密钥就需要将近2285年的时间,可见,这是难以实现的。然而,这并不等于说DES是不可破解的。而实际上,随着硬件技术和Internet的发展,其破解的可能性越来越大,而且,所需要的时间越来越少。1.3.3 主要功能及应用领域DES算法的优点主要有以下四点: 提供高质量的数据保护,防止数据未经授权的泄露和未被察觉的修改; 具有相当高的复杂性,使得破译的开销超过可能获得的利益,同时又便于理解和掌握; DE

18、S密码体制的安全性应该不依赖于算法的保密,其安全性仅以加密密钥的保密为基础; 实现经济,运行有效,并且适用于多种完全不同的应用。在银行金融界及非金融界,越来越多地用到了DES 算法。目前在国内,随着三金工程尤其是金卡工程的启动,DES算法在POS、ATM、磁卡及智能卡(IC卡)、加油站、高速公路收费站等领域被广泛应用,以此来实现关键数据的保密,如信用卡持卡人的PIN的加密传输,IC卡与POS间的双向认证、金融交易数据包的MAC校验等,均用到DES算法。1.4 传输系统概述信息共享化是当今世界经济和社会发展的大趋势。在信息共享化时代如何充分、快捷、有效地利用大量信息,提高工作效率,是众多企业需要

19、充分考虑的问题之一。随着企业规模的扩大以及服务内容和办公设施的现代化,这种情况日益突出。鉴于如上特点,开发一个方便快捷的网络文件传输系统是很有意义的,它在文件传输方面的高效准确将会提高企业的办事效率,为企业节省开支,为家庭提供方便。本论文所设计的网络文件传输系统通过网络上用户的IP地址和端口号确定了需要传输文件的双方,进而以C/S模式通过TCP/IP协议实现双方文件的传输功能。本文的图像传输系统可以一定程度上实现信息的共享和传输,及时而且透明地反映文件信息变动情况,为信息的便捷共享提供了帮助6。1.4.1 国内外研究现状大型局域网广泛存在于国内外大型企业中,而大部分企业还是通过Internet

20、等外网或者U盘等硬件来传输文件,只有少数企业针对该企业的特点设计了自己的文件传输系统,总的来说在企业内部发展局域网文件传输系统还有很大的发展空间。从1969年美国国防部高级研究计划管理局( ARPA - - Advanced Research Projects Agency )建立了一个命名为Arpanet的网络开始到今日,网络发展已走过足足50年的时间,在这漫长的时间里,局域网文件传输系统也得到了相应的发展,现在正处于高速发展阶段,这从现今市面上流行的腾讯QQ、飞鸽传书等可见一斑。可以想象,在不久的将来,以内部网络为中心的资源共享系统将在全世界的信息流动中占有到举足轻重的地位。1.4.2 开

21、发工具本系统所用到的开发工具主要是Visual C+ 6.0,简称VC或者VC6.0,是微软推出的一款C+编译器,将“高级语言”翻译为“机器语言(低级语言)”的程序。Visual C+是一个功能强大的可视化软件开发工具。自1993年Microsoft公司推出Visual C+1.0后,随着其新版本的不断问世,Visual C+已成为专业程序员进行软件开发的首选工具。虽然微软公司推出了 Visual C+.NET(Visual C+7.0),但它的应用的很大的局限性,只适用于Windows 2000、Windows XP和Windows NT4.0。所以实际中,更多的是以Visual C+6.0

22、为平台。Visual C+6.0不仅是一个C+ 编译器,而且是一个基于Windows操作系统的可视化集成开发环境(integrated development environment,IDE)。Visual C+6.0由许多组件组成,包括编辑器、调试器以及程序向导AppWizard、类向导Class Wizard等开发工具。 这些组件通过一个名为Developer Studio的组件集成为和谐的开发环境。主要有三部分组成:(1)Developer Studio,这是一个集成开发环境, 我们日常工作的99%都是在它上面完成的,再加上它的标题赫然写着“Microsoft Visual C

23、+”,所以很多人理所当然的认为,那就是Visual C+了。其实不然,虽然Developer Studio提供了一个很好的编辑器和很多Wizard,但实际上它没有任何编译和链接程序的功能。(2)MFC。从理论上来讲,MFC也不是专用于Visual C+,Borland C+,C+Builder和Symantec C+同样可以处理MFC。同时,用Visual C+编写代码也并不意味着一定要用MFC,只要愿意,用Visual C+来编写SDK程序,或者使用STL,ATL,一样没有限制。不过,Visual C+本来就是为MFC打造的,Visual C+中的许多特征和语言扩展也是为MFC而设计的,所以

24、用Visual C+而不用MFC就等于抛弃了Visual C+中很大的一部分功能。但是,Visual C+也不等于MFC。(3)Platform SDK。这才是Visual C+和整个Visual Studio的精华和灵魂,虽然很少能直接接触到它。大致说来,Platform SDK是以Microsoft C/C+编译器为核心(不是Visual C+,看清楚了),配合MASM,辅以其他一些工具和文档资料7。1.4.3 传输系统设计首先,网络应用程序是一种在不同系统的新进程间通过网络通信协议进行的进程间的通信问题。在网络中为了标识通信的进程,首先要用IP地址来标识不同的主机,主机上不同的

25、进程要用使用端口号来标识。即:本地协议、本地地址、本地端口号、远地协议、远地地址、远地端口号。其次,在Windows中编程是通过套接口SOCKET来编程的,套接口可以看成是两个网络应用程序进行的通信时,各自通信连接种的一个端点。通信时,其中的一个网络应用程序将要传输的一段信息写入它所在主机的Socket中,该Socket通过网络接口卡NIC的传输介质将这段信息发送到另一台主机的Socket种,使这段信息能穿传送到其他程序中。套接口分为流式和数据报套接口。网络传输文件的时候还需要用到多线程和线程间访问互斥文件的问题。创建线程后,一个应用程序可以同时有多个线程一起运用CPU的资源,大大的加强对CP

26、U的利用率。同时也从另一个方面加快了传输的速度。但是遇到的问题就是各个线程对文件的共享问题。所以建立好的信号量来实现他们之间的访问规则是很重要的。否则,传输的文件将会出现很多问题。1.5本文主要内容安排和研究框架本系统在解决文件传输的过程中,为保证完整性和机密性安全问题提供了很好的解决方案。该文件安全传输系统在设计时力求功能较为简单,方便了用户对文件传输的使用,同时用户在不了解该软件的加解密算法的情况下,依然可以对该软件进行使用。既要保证文件传输的安全性和完整性,也保证用户的可操作性。文件安全传输系统框架如(图1.1)所示,包括接收端和发送端两部分,发送端要实现的功能包括:界面上可实现选择需要

27、传输的图片路径,然后将图片加密,加密后可输入图片发送目标地址,点击发送按钮后进行传输显示传输进度。接收端:用户点击接收端启动按钮,等待发送端连接,连接成功后开始接受图片并显示在主界面预览,点击解密按钮可以进行解密。在传输过程中可随时停止、退出程序。图1.1 安全传输系统框架采用本系统后,可以很便捷地传输文件,同时最重要的是该系统可以保证文件传输过程中不会出现文件被盗取偷阅,保证了文件的安全性。同时,该系统的操作不需要专业人士来操作,一般人员就可以操作,这在信息社会的今天,个人隐私、商业秘密的传输提供了可行性。降低了文件传输的成本,提高了企业的效益。 第二章 DES加/解密模块的实现 9第二章

28、DES加/解密模块的实现2.1加密部分2.1.1 加密流程在加密前,先对整个明文进行分组,然后对每一组二进制进行加密处理,产生一组密文数据,最后将各组密文串接起来,即得出整个密文8。密钥的长度为56位(密钥通常表示为64位的数。但每个第8位都用作奇偶检验,可以忽略)。密钥可以是任意的56位数,且可以在任意的时候改变。DES算法的人口参数有3个:Key、Data、Mode。其中Key为8个字节共64位,是DES算法的工作密钥;Data也为8个字节64位,是要被加密或解密的数据;Mode为DES的工作方式。以下是DES的具体实现步骤9:(1)获取一个64位密钥。程序已设定好,但可以修改。int k

29、ey64 /数组 用于输入并存储64位密钥(2)压缩型置换1在64位密钥上完成压缩变换(奇偶校验位被丢弃,密钥减小到56位。序列改变后,第1位被置换成了原来的第57位,第2位为49位,以此类推,第56位被置换成了原来的第4位。)换位转换表如(表2.1)所示。int PermuteChoice1=57,49,4120,12,4;/数组 用于对密钥进行置换选择1变换 第二章 DES加/解密模块的实现 19void permute_option1(int tablein, int tableout)/选择置换1,将64位密钥选择成56位表2.1 换位转换表5749413325179158504234

30、2618102595143352719113605244366355473931231576254463830221466153453729211352820124将改变序列后的密钥分割成两部分,前28位叫作tableout1,后28位叫做tableout2。 计算16个子密钥,从i = 1开始。 分别对tableout1i-1和tableout2i-1做1或者2位循环左移来获取tableout1 i和tableout2i,每次循环移动的位数由(表2.2)给出:表2.2 循环移位表循环12345678910111213141516左移1122222212222221void left shif

31、t(int table, int n)/函数 对数组左移n位(3)压缩置换2将tableout1和tableout2串联,结果将会得到48位的序列PermuteChoice2 i。压缩置换表如(表2.3)int PermuteChoice2 /数组 存储48位密钥序列void permute_option2(int tablein, int tableout48)/置换选择2,从56位密钥中选出48位表2.3 压缩置换表1417112415328156211023191242681672720132415231374755304051453348444939563453464250362932

32、循环此步骤,直至得出16轮所需密钥。void produce_key () /产生16轮的密钥,存放在key4816数组中(4)64位明文块的置换处理表2.4 初始置换表58504234261810260524436282012462544638302214664564840322416157494133251791595143352719113615345372921135635547393123157将需要加密的明文分为64位的明文块,如果最后不够64位则进行填充。每一个明文块按照(表2.4)进行初始置换。int InitialPermute /数组 用于存放初始置换表void init_

33、permute(int tablein,int tableout)/初始置换,打乱明文顺序经过初始置换后,将64位明文分为两部分,各32位。void division(int tablein, int tableout1, int tableout2, int n)/将一个数组拆分成两个数组(5)扩充置换将拆分后的右半部分进行扩充置换,由32位扩充至48位,以便与48位子密钥进行异或运算。扩充置换表如(表2.5)。表2.5 扩充置换表321234545678989101112131213141516171617181920212021222324252425262728292829303132

34、1int ExpandPermute /数组 存储扩充置换表void expand_permute(int tablein,int tableout)/扩充置换,将32位明文扩充成48位得到48位结果后与48位子密钥进行异或运算。void xor(int table,int tableout,int n)/将两个数组中的数据按位异或(6)S盒变换将上一步的异或结果通过一个S盒,产生32比特的输出。代换过程由8个S盒组成,每个S盒的输入长度为6比特,输出为4比特,其变换过程关系如(表2.6)。每个S盒给出了4个代换(由一个表的4行给出)。对每个盒Si,其6比特输入中,第1个和第6个比特形成一个2

35、位二进制数,用来选择Si的4个代换中的一个。6比特中间4位用来选择列。行和列选定后,得到其交叉位置的十进制数,将这个数表示为4位二进制数即得到这一S盒的输出。表2.6 S盒替换盒S11441312151183106125907015741421311061211953841148136211151297310501512824917511314100613替换盒S2151814611349721312050313471528141201106911501471110413158126932151381013154211671205149替换盒S3100914631551131271142813

36、7093461028514121115113649815301112125101471101306987415143115212替换盒S47131430691012851112415138115615034721211014910690121171315131452843150610113894511127214替换盒S52124171011685315130149141121247131501510398642111101378159125630141181271142136150910453替换盒S6121101592680133414751110154271295611314011389

37、1415528123704101131164321295151011141760813替换盒S74112141508133129751061130117491101435122158614111312371410156805926111381410795015142312替换盒S81328461511110931450127115138103741256110149271141912142061013153582114741081315129035611 int Sbox8416 /三维数组 存储8个S盒每轮变换可由(式2.1)表示:Li = Ri-1Ri = Li-1 xor f(Ri-1,

38、 Ki)) (式2.1)如此循环,共进行16轮。(7)初始逆变换经过16轮循环,交换左右两部分数据块后,将结果进行初始逆变换,最终输出64位密文。初始逆变换表如(表2.7)。表2.7 初始逆变换表40848165624643239747155523633138646145422623037545135321612936444125220602835343115119592734242105018582633141949175725int ReverseIP /存储初始逆变换表void reverse_init_permute(int tablein,int tableout)/初始逆变换函数整

39、个加密系统的流程如(图2.1)所示10。图2.1 DES加密系统流程图2.1.2加密演示DES加密主要实现代码如下所示:int charToBinary(char * chin, int iaout)/将字符转化为二进制数组int binaryToChar(int iain, char * chout)/将二进制数组转化为字符void DESdecrypt(int ciphertext6464,int plaintext6464) int temp6464;int le3232,re3232,temp3232;int ex4848;cout<<"ciphertext:&q

40、uot;<<endl;display(ciphertext64,64,8); /展示输出数组init_permute(ciphertext64,temp64);division(temp64,le32,re32,32); /数组拆分for(int i=0; i<16; i+) transfer(re32,temp32,32); /传值函数expand_permute(re32,ex48); /扩充置换xor(key4815-i,ex48,48); /将两个数组中的数据按位异或s_box(ex48,re32); /S盒变换permute_p(re32); /置换操作xor(le

41、32,re32,32);transfer(temp32,le32,32); /传值函数exchange(le32,re32,32);mergence(le32,re32,temp64,32); /数组合并reverse_init_permute(temp64,plaintext64);cout<<"plaintext:"<<endl;display(plaintext64,64,8); / DES解密函数,将64位明文转换为64位密文加密演示:int encrypt()cout << "This demo is for DES

42、encrypt, make sure file"plaintext.jpg"" << endl;cout << "is in your running directory!" << endl;int iain64;int iaout64;char cb88;char back8;ifstream fin;fin.open("plaintext.jpg",ios:binary); /打开需要加密的图片文件ofstream fout;fout.open("ciphertext.jpg

43、",ios:binary); /输出加密后的密文图片文件doresetChar(cb8,8); /初始化resetChar(back,8);fin.read(cb8,8); /按字节读入charToBinary(cb8,iain); /字符到二进制DESencrypt(iain,iaout); /加密binaryToChar(iaout,back); /二进制到字符fout.write(back,8); while(fin.peek()!=EOF);fin.close(); /关闭输入流fout.close(); /关闭输出流return 0;2.2 解密部分2.2.1 解密流程DE

44、S的解密和加密使用同一种算法,但子密钥使用的顺序相反,加密的最后一轮输出作为解密的第一轮输入。解密过程为加密过程的逆过程11。void DESdecrypt(int ciphertext6464,int plaintext6464)/解密函数 将64位密文转换为64位明文2.2.2 解密演示DES解密主要实现代码如下所示:int decrypt() cout << "This demo is for DES decrypt, make sure file"ciphertext.jpg"" << endl;cout <<

45、 "is in your running directory!" << endl;int iain64;int iaout64;char cb88;char back8;ifstream fin;fin.open("ciphertext.jpg",ios:binary); /打开需解密图片文件ofstream fout;fout.open("plaintext_decrypted.jpg",ios:binary);/输出解密后的图片文件doresetChar(cb8,8);resetChar(back,8);fin.rea

46、d(cb8,8);charToBinary(cb8,iain);DESdecrypt(iain,iaout);binaryToChar(iaout,back);fout.write(back,8);while(fin.peek()!=EOF);fin.close();fout.close();return 0;第三章 传输系统模块的实现 31第三章 传输系统模块的实现3.1 传输系统基础知识文件传输系统是基于C/S模式的,以socket为中心实现服务器和客户端的通信。本节介绍开发网络文件传输系统所涉及到的理论知识,主要包括TCP/IP协议,C/S架构,Windows Socket编程12。3.

47、1.1 所需协议(1)TCP/IP协议TCP/IP是Transmission Control Protocol/Internet Protocol的简写,中文译名为传输控制协议/因特网互联协议,又叫网络通讯协议,这个协议是Internet最基本的协议,是Internet国际互联网络的基础,简单地说,就是由网络层的IP协议和传输层的TCP协议组成的。TCP/IP 定义了电子设备(比如计算机)如何连入因特网,以及数据如何在它们之间传输的标准。TCP/IP是一个四层的分层体系结构。高层为传输控制协议,它负责聚集信息或把文件拆分成更小的包。低层是网际协议,它处理每个包的地址部分,使这些包正确地到达目的

48、地。(2)连接的协议面向非连接的UDP协议,“面向非连接”就是在正式通信前不必与对方先建立连接,不管对方状态就直接发送。与手机短信非常相似:你在发短信的时候,只需要输入对方手机号就OK了。它是面向非连接的协议,它不与对方建立连接,而是直接就把数据包发送过去。面向连接的TCP 协议,“面向连接”就是在正式通信前必须要与对方建立起连接。比如你给别人打电话,必须等线路接通了、对方拿起话筒才能相互通话。TCP(Transmission Control Protocol,传输控制协议)是基于连接的协议,也就是说,在正式收发数据前,必须和对方建立可靠的连接。本文采取可靠的TCP协议,通过IP地址建立连接后

49、再传输数据。(3)三次握手协议所谓的“三握手”:对每次发送的数据量跟踪进行协商使数据段的发送和接收同步,根据所接收到的数据量而确定的数据确认数及数据发送、接收完毕后何时撤消联系,并建立虚连接。为了提供可靠的传送,TCP 在发送新的数据之前,以特定的顺序将数据包的序号,并需要这些包传送给目标机之后的确认消息。TCP 总是用来发送大批量的数据。当应用程序在收到数据后要做出确认时也要用到TCP。 SYN:请求同步/同步序列号 ACK:应答同步/确认字段。握手过程13如(图3.1)图3.1 TCP连接三次握手3.1.2 C/S架构即Client/Server (客户机/服务器) 结构,是大家

50、熟知的软件系统体系结构,通过将任务合理分配到Client端和Server端,降低了系统的通讯开销,需要安装客户端才可进行管理操作14。客户端和服务器端的程序不同,用户的程序主要在客户端,服务器端主要提供数据管理、数据共享、数据及系统维护和并发控制等,客户端程序主要完成用户的具体的业务。开发比较容易,操作简便,但应用程序的升级和客户端程序的维护较为困难。目前大多数应用软件系统都是Client/Server形式的两层结构,由于现在的软件应用系统正在向分布式的Web应用发展,Web和Client/Server应用都可以进行同样的业务处理,应用不同的模块共享逻辑组件;因此,内部的和外部的用户都可以访问新的和现有的应用系统,通过现有应用系统中的逻辑可以扩展出新的应用系统。这也就是目前应用系统的发展方向。C/S的优点是能充分发挥客户端PC的处理能力,很多工作可以在客户端处理后再提交给服务器。对应的优点就是客户端响应速度快。C/S架构的界面和操作可以很丰富。安全性能可以很容易保证,实现多层认证也不难。缺点主要有以下几个:1.由于需要输入服务器的IP地址,而目前由于IP地址不够,很多主机都采用代理的方式接入,没有公有IP地址,所以主要用于局域网中,适用面窄。2.用户群固定。由于程序需要安装才可使用,因此不适合面向一些不可知的用户。3.维护

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论