网学网VC与C++类别编辑为广大网友搜集整理了:C++数据加密技术的网络安全应用|DES实现|RSA实现绩等信息,祝愿广大网友取得需要的信息,参考学习。
客服咨询,网学网竭诚为您服务,本站永久域名:myeducs.cn | |
、课题背景 计算机系统以及通过网络的系统互联的飞速发展使得各个组织和个人对存储的和系统间交流的信息的依赖日益加强。随之引起了人们对于防止数据和资源的外露、保证数据和消息的真实性还有保护系统免受网络攻击的高度重视。同时,对于密码学与网络安全的研究已较为成熟,这促进了加强网络安全的各种实用性强且易于实现的应用的发展。 数据加密技术是对信息进行重新编码,从而达到隐藏信息内容,使非法用户无法获得信息真实内容的一种技术手段。网络中的数据加密则是通过对网络中传输的信息进行数据加密,满足网络安全中数据保密性、数据完整性等要求,而基于数据加密技术的数字签名技术则可满足防抵赖等安全要求。可见,数据加密技术是实现网络安全的关键技术。 二、课题内容 1、数据加密和解密技术现状 通过学习和查阅相关资料,分析数据加密和解密技术的现状,了解加密技术的发展趋势。 2、效率和算法分析 对目前流行的主要数据加密算法的过程及效率等主要特性进行分析。 3、实施数字签名和数据加密全过程 在此基础上,选择一系列主要的算法,实现对传输数据实施数据加密和数字签名的全过程。 三、文献综述 1、数据加密技术的分类 ·对称密钥算法。它的特点是数据加密和解密使用相同的密钥,即加密密钥也可以用作解密密钥。对称密钥算法使用起来简单快捷,密钥较短,且破译困难。 ·非对称密钥算法。与对称密钥算法不同,非对称密钥算法需要两个密钥:公钥(public key)和私钥(private key)。公钥与私钥是一对,如果用公钥对数据进行加密,只有用对应的私钥才能解密;如果用私钥对数据进行加密,那么只有用对应的公钥才能解密。该类算法也被称为公开密钥算法。 ·HASH函数。HASH函数(也称杂凑函数或杂凑算法)就是把任意长的输入消息串变化成固定长的输出串的一种函数。这个输出串称为该消息的杂凑值。 2、加密技术的功能 ·机密性。确保数据的保密性。机密性通常是使用加密实现的。可以使用加密算法(使用加密密钥)将明文转换为密文,并使用相应的解密算法将密文转换回明文。对称加密算法使用相同的密钥进行加密和解密,而非对称算法则使用公钥/私钥对。 ·数据完整性。确保数据免受意外或者故意(恶意)的修改。完整性通常是由消息身份验证代码或哈希值提供的。哈希值是从数据序列导出的固定长度的数值。哈希值用于验证通过非安全通道传送的数据的完整性。可以将收到的数据的哈希值与传送时数据的哈希值进行比较,以确定数据是否被篡改。 ·身份验证。保证数据来自某一方。数字证书用于提供身份验证。数字签名通常应用于哈希值,因为这些值比它们所代表的源数据小得多。 四、参考文献 [1]冯登国,计算机通信网络安全,北京,清华大学出版社,2001 [2]卢开澄,计算机密码学:计算机网络中的数据保密与安全,北京,清华大学出版社,2003 [3]Mohan Atreya著,贺军译,数字签名,北京,清华大学出版社,2003 [4]罗军舟,黎波涛,杨明,吴俊,TCP/IP协议及网络编程技术,北京,清华大学出版社,2004 [5]Joan Daemen,Vincent Rijmen著,谷大武,徐胜波译,高级加密标准(AES)算法:Rijndael的设计,北京,清华大学出版社,2003 [6]Paul Garrett著,吴世忠 宋晓龙 郭涛 等译,密码学导引,北京,机械工业出版社,2003 [7]胡预濮,张玉清,肖国镇,对称密码学,北京,机械工业出版社,2002 [8]张先红,数字签名原理及技术,北京,机械工业出版社,2004 [9]黄超,WIndows网络编程,北京,人民邮电出版社,2003 [10]刘东华,网络与通信安全技术,北京,人民邮电出版社,2002 [11]李海泉,李健,计算机网络安全与加密技术,北京,科学出版社,2001 [12]张曜,陆涛,张青,加密解密与网络安全技术,北京,冶金工业出版社,2002 [13]Michael Welschenbach著,赵振江,连国卿译,密码编码学:加密方法的C与C++实现,北京,电子工业出版社,2003 [14]Arto Salomaa著,丁存生,单炜娟译,公钥密码学,北京,国防工业出版社,1998 [15]William Stallings,Cryptography and Network Security,New Jersey,Pearson,2003 [16]Richard J. Spillman,Classical and Contemporary Cryptology,New Jersey,Pearson,2004
目录 4.4 加密模块实现 4.4.1 DES 实现 由于 DES 安全性主要取决于它所使用的密钥,而其密钥的有效长度又很短,只有56位,要想在当前形势下完全满足安全需求是比较困难的。多重 DES 是一种改进的方法,它的思路就是使用多个密钥,进行多次加密运算,从而达到增加密钥长度,加强算法安全性的目的。但这不是随意就能做到的,一种想法是尝试应用 DES 两次 -- 称为 双重加密。在这种方案情况下,使用一个密钥为消息加密一次,然后使用另一个密钥再次加密(密文到修改过的密文)。一种称为中间相遇的攻击最后证明这种双重加密并不比单重加密更好。实际上,使用某种类型的密码情况下,多重加密可能并不比单重加密好(一种称为封闭式密码的类别)。应避免使用封闭式密码,因为它们更容易遭到攻击。尽管双重加密不是非常有效,但证明三重加密则有效得多,例如,56 位 DES 在三重加密后,产生 112 位长度,相信这种长度对于任何应用程序来说都已经足够了。尽管在速度上有些慢,但仍在可接受的范围内。三重加密的 DES,或者简称三重 DES(通常写成 3DES)是一种流行的现代对称块算法。 本程序就选择采用三重 DES 算法进行加密,加解密过程如图4.2所示。 图4.2 三重 DES 加解密过程 源代码中将 DES 的实现封装为类 CDes,其成员函数定义如下: void L_shift(unsigned char kin[]); 对28项的数组进行循环左移,用于子密钥生成(见图2.4) void Key_init(unsigned char key[8],int key_out[17][48]); 由输入的64位密钥,生成16轮迭代使用的16个48位子密钥(见图2.4) void Rk_xor(int r[32],int round,int f[32],int key_out[17][48]); 实现 DES 一轮迭代中的 F 函数(见图2.3) void Encrypt(unsigned char text_in[8],int key_out[17][48]); 整个64位数据块的加密(见图2.1) void Decrypt(unsigned char text_in[8],int key_out[17][48]); 整个64位数据块的解密 CDes 类实现加密的过程: 1. 生成密钥key[8]; 2. 调用函数 Key_init( key[8] , key_out[17][48] ) 生成16轮子密钥,key_out[17][48]存放结果; 3. 调用函数 Encrypt( text[8] ,key_out[17][48]) 完成加密,明文输入及输出密文都是text[8]。 CDes 类实现解密的过程: 1. 读取密钥key[8]; 2. 调用函数 Key_init(key[8] , key_out[17][48]) 生成16轮子密钥,key_out[17][48]存放结果; 3. 调用函数 Decrypt(text[8] ,key_out[17][48]) 完成解密,密文输入及输出明文都是text[8]。 4.4.2 RSA 实现 RSA 依赖大数运算,目前主流 RSA 算法都建立在512到1024位的大数运算之上。而大多数的编译器只能支持到64位的整数运算,在运算中所使用的整数必须小于等于64位,即:0xffffffffffffffff,也就是18446744073709551615,这远远达不到 RSA 的需要,于是需要专门建立大数运算库来解决这一问题。 最简单的办法是将大数当作数组进行处理,也就是将大数用0—9这十个数字组成的数组进行表示,然后模拟人们手工进行“竖式计算”的过程编写其加减乘除函数。但是这样做效率很低,因为二进制为1024位的大数其十进制也有三百多位,对于任何一种运算,都需要在两个有数百个元素的数组空间上做多重循环,还需要许多额外的空间存放计算的进退位标志及中间结果。另外,对于某些特殊的运算而言,采用二进制会使计算过程大大简化,这种大数表示方法转化成二进制显然非常麻烦,所以在某些实例中则干脆采用了二进制数组的方法来记录大数,这样效率就更低了。 一个有效的改进方法是将大数表示为一个n 进制数组,对于目前的32位系统而言 n 可以取值为2的32次方,即0x10000000,假如将一个二进制为1024位的大数转化成0x10000000进制,它就变成了32位,而每一位的取值范围就不是二进制的0—1或十进制的0—9,而是0-0xffffffff,我们正好可以用一个无符号长整数来表示这一数值。所以1024位的大数就是一个有32个元素的unsigned long数组,针对unsigned long数组进行各种运算所需的循环规模至多32次而已。而且
6 结论 网络信息安全是一个很重要的课题,它已成为网络应用发展的一个瓶颈,如何保障网络信息安全已成为未来网络应用的重中之重,成为人们关注的焦点。本文就是在查阅和学习大量国内外相关文献的基础上,分析网络信息安全的关键技术数据加密技术的问题进行了深入研究和探讨。 本文首先分析密码技术目前的发展情况,比较分析各种加密算法的加密思想和工作机制,着重分析了 DES 和 RSA,讨论了以 RSA 数字签名方案为主的数字签名技术及其在不同场合的应用。在此基础上,通过对 DES 和 RSA 两个算法和共同应用,实现了局域网内文件的安全传输,利用 3DES 加密传输文件、RSA 加密 3DES 密钥来保证保密性,RSA 结合 MD5 产生数字签名保证文件的完整性。在数据通信之前,首先使用对称密钥体制的 DES 算法对要传输的文件进行加密,同时利用接收方的公钥密码体制 RSA 的公钥对 DES 的密钥进行加密,然后将加密后的密钥和密文传送到接收方。接收方在成功收到后,用自己的私钥解密获得 DES 密钥,然后将该密钥用来解密收到的被加密文件。 另外,本课题还实现了基于 Winsock 网络通信,利用 MFC 封装的 CSocket 实现在传输层上建立有连接的通信,保证文件的稳定传输。 本文选择了加密技术一系列典型的算法,实现对传输数据实施数据加密和数字签名的全过程,将其运用于局域网文件加密传输系统中。但是,在算法应用方面还有一些需要改进的地方,比如 RSA 公钥的发布以及效率的提高等。 谢辞 首先要衷心感谢我的导师xxx高级工程师的关心和帮助。本论文从选题到最后完成以及课题的研究都是在徐老师的精心指导下完成的。徐老师丰富的知识,严谨的学风,真诚和蔼的为人,都是我学习的榜样。同时,徐老师还为我提供了很多物质环境方面的帮助,为我的研究工作创造了有利的条件。 还要感谢我的老师和同学们。在我的学习和生活中遇到疑问和困难时伸出援手,毫无保留的帮助我。 最后,感谢我的家人,在他们的支持下我完成了大学本科四年的学习。 再次感谢所有理解、支持和帮助我的人! 参考文献 [1]冯登国,计算机通信网络安全,北京,清华大学出版社,2001 [2]卢开澄,计算机密码学:计算机网络中的数据保密与安全,北京,清华大学出版社,2003 [3]Mohan Atreya著,贺军译,数字签名,北京,清华大学出版社,2003 [4]罗军舟,黎波涛,杨明,吴俊,TCP/IP协议及网络编程技术,北京,清华大学出版社,2004 [5]Joan Daemen,Vincent Rijmen著,谷大武,徐胜波译,高级加密标准(AES)算法:Rijndael的设计,北京,清华大学出版社,2003 [6]Paul Garrett著,吴世忠宋晓龙 郭涛 等译,密码学导引,北京,机械工业出版社,2003 [7]胡预濮,张玉清,肖国镇,对称密码学,北京,机械工业出版社,2002 [8]张先红,数字签名原理及技术,北京,机械工业出版社,2004 [9]黄超,WIndows网络编程,北京,人民邮电出版社,2003 [10]刘东华,网络与通信安全技术,北京,人民邮电出版社,2002 [11]李海泉,李健,计算机网络安全与加密技术,北京,科学出版社,2001 [12]张曜,陆涛,张青,加密解密与网络安全技术,北京,冶金工业出版社,2002 [13]Michael Welschenbach著,赵振江,连国卿译,密码编码学:加密方法的C与C++实现,北京,电子工业出版社,2003 [14]Arto Salomaa著,丁存生,单炜娟译,公钥密码学,北京,国防工业出版社,1998 [15]William Stallings,Cryptography and Network Security,New Jersey,Pearson,2003 [16]Richard J. Spillman,Classical and Contemporary Cryptology,New Jersey,Pearson,2004
| |
本站发布的计算机毕业设计均是完整无错的全套作品,包含开题报告+程序+论文+源代码+翻译+答辩稿PPT | |
本文选自计算机毕业设计http://myeducs.cn |