《P10-网络信息加密传输程序设计解读课件.ppt》由会员分享,可在线阅读,更多相关《P10-网络信息加密传输程序设计解读课件.ppt(30页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、计算机网络编程技术计算机网络编程技术第第10章章 网络信息加密传输程序设计网络信息加密传输程序设计1/6/20231网络攻击类型网络攻击类型l网络信息安全网络信息安全:l信息存储安全信息存储安全l信息传输安全信息传输安全1/6/20232本章的主要内容本章的主要内容l数据加密模型数据加密模型l对称加密程序设计对称加密程序设计l非对称加密程序设计非对称加密程序设计l网络信息加密传输程序设计网络信息加密传输程序设计1/6/2023310.1 数据加密模型数据加密模型(1)数据加密模型描述数据加密模型描述1/6/20234(2)对称加密模型对称加密模型对称加密算法使用起来简单快捷,密钥较短,且破译困
2、难。对称加密算法使用起来简单快捷,密钥较短,且破译困难。1/6/20235常见的对称加密算法常见的对称加密算法密码算法密码算法作作 者者密钥长度密钥长度说说 明明DESIBM56对于现在使用,太弱了对于现在使用,太弱了IDEAMassey和和Xuejia128好,但是属于专利算法好,但是属于专利算法RC4Ronald Rivest12048小心,有一些弱密钥小心,有一些弱密钥RC5Ronald Rivest128256好,但是属于专利算法好,但是属于专利算法RijndaelDaemen和和Rijmen128256最佳的选择最佳的选择SerpentAnderson,Biham,Knuds1282
3、56很强很强三重三重DESIBM168第二最佳选择第二最佳选择TwofishBruce Schneier128256很强,被广泛使用很强,被广泛使用1/6/20236(3)非对称加密模型非对称加密模型l非对称加密算法研制的最初理念与目标是旨在解决对称加密算非对称加密算法研制的最初理念与目标是旨在解决对称加密算法中密钥的分发问题法中密钥的分发问题.l实际上它不但很好地解决了这个问题,还可利用非对称加密算实际上它不但很好地解决了这个问题,还可利用非对称加密算法来完成对电子信息的数字签名以防止对信息的否认与抵赖;法来完成对电子信息的数字签名以防止对信息的否认与抵赖;同时,还可以利用数字签名较容易地发
4、现攻击者对信息的非法同时,还可以利用数字签名较容易地发现攻击者对信息的非法篡改,以保护数据信息的完整性。篡改,以保护数据信息的完整性。1/6/20237(4)数字签名模型数字签名模型数字签名一般采用非对称加密技术(如数字签名一般采用非对称加密技术(如RSA)。1/6/2023810.2 对称加密程序设计对称加密程序设计10.2.1 对称加密算法对称加密算法lSymmetricAlgorithm类表示所有对称算法的实现都必类表示所有对称算法的实现都必须从中继承的抽象基类须从中继承的抽象基类;l派生了派生了DES、Triple-DES、RC2和和Rijndael等对称加等对称加密算法密算法;l来自
5、于来自于System.Security.Cryptography命名空间。命名空间。1/6/20239 SymmetricAlgorithm类的主要属性和方法类的主要属性和方法 名名 称称描描 述述BlockSize获取或设置加密操作的块大小获取或设置加密操作的块大小IV获取或设置对称算法的初始化向量获取或设置对称算法的初始化向量Key获取或设置对称算法的密钥获取或设置对称算法的密钥KeySize获取或设置对称算法所用密钥的大小获取或设置对称算法所用密钥的大小Mode获取或设置对称算法的运算模式获取或设置对称算法的运算模式Clear()释放资源释放资源Create()创建用于执行对称算法的加密
6、实例创建用于执行对称算法的加密实例CreateDecryptor()用指定的密钥和初始化向量创建一个对称解密器对象用指定的密钥和初始化向量创建一个对称解密器对象CreateEncryptor()用指定的密钥和初始化向量创建一个对称加密器对象用指定的密钥和初始化向量创建一个对称加密器对象GenerateIV()为对称加密算法生成一个随机的初始化向量(为对称加密算法生成一个随机的初始化向量(IV),并重写),并重写IV属性中所存属性中所存储的值储的值GenerateKey()为对称加密算法生成一个随机密钥(为对称加密算法生成一个随机密钥(Key),并重写),并重写Key属性的值属性的值1/6/20
7、2310对称算法的实现对称算法的实现:lRijndaelManagedlDESCryptoServiceProviderlRC2CryptoServiceProviderlTripleDESCryptoService Provider1/6/20231110.2.2 基于流的加密解密方法基于流的加密解密方法l由于对称加密往往用于加密大量数据信息,隐藏采用了流由于对称加密往往用于加密大量数据信息,隐藏采用了流式加密方法,以便支持对内存流和文件流等数据的加密和式加密方法,以便支持对内存流和文件流等数据的加密和解密。托管对称加密类与称为解密。托管对称加密类与称为CryptoStream的特殊流类的特
8、殊流类一起使用。一起使用。l可以使用从可以使用从Stream类派生的任何类(包括类派生的任何类(包括FileStream、MemorySteam和和NetworkStream)初始化)初始化CryptoStream类。使用这些类,可以对各种流对象执行类。使用这些类,可以对各种流对象执行对称加密。对称加密。1/6/202312(1)加密过程实例加密过程实例:创建对称加密算法实例:创建对称加密算法实例:cryptoService=new RijndaelManaged();cryptoService.Mode=CipherMode.CBC;/设置为链接模式设置为链接模式 设置初始化参数,包括密钥和
9、初始化向量等。设置初始化参数,包括密钥和初始化向量等。cryptoService.Key=GetLegalKey();/设置密钥设置密钥cryptoService.IV=GetLegalIV();/设置初始向量设置初始向量 创建加密实例:创建加密实例:ICryptoTransform cryptoTransform=cryptoService.CreateEncryptor();创建加密流:创建加密流:MemoryStream ms=new MemoryStream();/创建内存流创建内存流CryptoStream cs=new CryptoStream(ms,crytoTransform,
10、CryptoStreamMode.Write);通过流的写操作实现数据加密:通过流的写操作实现数据加密:cs.Write(plainByte,0,plainByte.Length);cs.FlushFinalBlock();byte cryptoByte=ms.ToArray();return Convert.ToBase64String(cryptoByte,0,cryptoByte.GetLength(0);1/6/202313(2)解密过程实例解密过程实例 创建对称加密算法实例:创建对称加密算法实例:cryptoService=new RijndaelManaged();cryptoSe
11、rvice.Mode=CipherMode.CBC;/设置为链接模式设置为链接模式 设置初始化参数,包括密钥和初始化向量等。用户设置方法如下:设置初始化参数,包括密钥和初始化向量等。用户设置方法如下:cryptoService.Key=GetLegalKey();/设置密钥设置密钥cryptoService.IV=GetLegalIV();/设置初始向量设置初始向量 创建解密实例,如:创建解密实例,如:ICryptoTransform cryptoTransform=cryptoService.CreateEncryptor();创建解密流,如:创建解密流,如:MemoryStream ms=
12、new MemoryStream(cryptoByte,0,cryptoByte.Length);/创建内存流创建内存流CryptoStream cs=new CryptoStream(ms,crytoTransform,CryptoStreamMode.Read);通过解密流进行数据解密:通过解密流进行数据解密:StreamReader sr=new StreamReader(cs);return sr.ReadToEnd();1/6/20231410.2.3 对称加密程序设计示例对称加密程序设计示例(1)命名空间与重要实例命名空间与重要实例using System.Security.Cry
13、ptography;using System.IO;RijndaelManaged rij=new RijndaelManaged();1/6/202315(2)加密函数加密函数if(textBox.Length=8&textBox.Length=8&textBox.Length=12)byte key=System.Text.Encoding.Default.GetBytes(textBox);byte iv=rij.IV;Rijndael crypt=Rijndael.Create();ICryptoTransform transform=crypt.CreateDecryptor(key
14、,iv);/读取加密后的文件读取加密后的文件FileStream fsopen=new FileStream(readfile,FileMode.Open);CryptoStream cs=new CryptoStream(fsopen,transform,CryptoStreamMode.Read);/把解密后的结果写进文件把解密后的结果写进文件FileStream fswrite=new FileStream(writefile,FileMode.OpenOrCreate);int length;while(length=cs.ReadByte()!=-1)fswrite.WriteByt
15、e(byte)length);fswrite.Close();cs.Close();fsopen.Close();1/6/20231710.3 非对称加密程序设计非对称加密程序设计lAsymmetricAlgorithm 类表示所有不对称算法的实现都类表示所有不对称算法的实现都必须从中继承的抽象基类,它派生出必须从中继承的抽象基类,它派生出RSA和和DSA两种加密两种加密算法,由算法,由System.Security.Cryptography 命名空间提供。命名空间提供。lRSACryptoServiceProvider类是公钥算法的一个实现类,类是公钥算法的一个实现类,通常用于数据的加密;通
16、常用于数据的加密;DSACryptoServiceProvider类是类是数字签名算法的一个实现类。数字签名算法的一个实现类。1/6/202318(1)RSACryptoServiceProvider类的主要方类的主要方法法 名名 称称描描 述述Clear释放由释放由 AsymmetricAlgorithm 类使用的所有资源(从类使用的所有资源(从AsymmetricAlgorithm继承)继承)Create允许实例化允许实例化 RSA 的特定实现(从的特定实现(从RSA继承)继承)Decrypt使用使用 RSA 算法对数据进行解密算法对数据进行解密Encrypt使用使用 RSA 算法对数据进
17、行加密算法对数据进行加密ExportCspBlob导出包含与导出包含与 RSACryptoServiceProvider 对象关联的密钥信息的对象关联的密钥信息的 BlobExportParameters导出导出 RSAParametersFromXmlString通过通过 XML 字符串中的密钥信息初始化字符串中的密钥信息初始化RSA对象(从对象(从RSA继承)继承)ToXmlString创建并返回包含当前创建并返回包含当前RSA对象的密钥的对象的密钥的XML字符串(从字符串(从RSA继承)继承)VerifyData通过将指定的签名数据与为指定数据计算的签名进行比较来验证指定的签名数通过将指
18、定的签名数据与为指定数据计算的签名进行比较来验证指定的签名数据据VerifyHash通过将指定的签名数据与为指定哈希值计算的签名进行比较来验证指定的签名通过将指定的签名数据与为指定哈希值计算的签名进行比较来验证指定的签名数据数据1/6/202319(2)一个一个RSA加密编程实例加密编程实例 该程序具有该程序具有4个功能:个功能:l首先是获取公钥首先是获取公钥/私钥对,并分别保存成文件;私钥对,并分别保存成文件;l对字符串进行加密和解密;对字符串进行加密和解密;l对文本文件进行加密和解密;对文本文件进行加密和解密;l对其他格式文件进行加密和解密。对其他格式文件进行加密和解密。1/6/20232
19、0密钥产生界面密钥产生界面1/6/202321加密加密/解密字符串示例解密字符串示例l字符串字符串“计算机网络编程代码测试计算机网络编程代码测试”的加密解密效果:的加密解密效果:1/6/202322加密程序部分:加密程序部分:readpublickey=ReadPublicKey();/读取公钥读取公钥crypt=new RSACryptoServiceProvider();UTF8Encoding enc=new UTF8Encoding();bytes=enc.GetBytes(textBox1.Text);crypt.FromXmlString(readpublickey);bytes=
20、crypt.Encrypt(bytes,false);string encryttext=enc.GetString(bytes);richtext2.Text=加密结果:加密结果:nn+encryttext+nn+加密结束!加密结束!;1/6/202323解密程序部分:解密程序部分:readprivatekey=ReadPrivateKey();/读取私钥读取私钥UTF8Encoding enc=new UTF8Encoding();byte decryptbyte;crypt.FromXmlString(readprivatekey);decryptbyte=crypt.Decrypt(b
21、ytes,false);string decrypttext=enc.GetString(decryptbyte);richtext3.Text=解密结果:解密结果:nn+decrypttext+nn+解密结束!解密结束!;1/6/20232410.4 网络信息加密传输程序设计网络信息加密传输程序设计(1)RSA网络加密传输原理网络加密传输原理 1/6/202325(2)混合加密技术用于网络传输的工作原理混合加密技术用于网络传输的工作原理 l混合背景:非对称加密算法的计算时间长,对于网络传输信息的实时混合背景:非对称加密算法的计算时间长,对于网络传输信息的实时性有很大影响,所以多用于秘密的加密
22、处理。而对称加密算法的运算性有很大影响,所以多用于秘密的加密处理。而对称加密算法的运算效率高,适用于实际信息的加密。效率高,适用于实际信息的加密。1/6/202326(3)服务器的实现:服务器的实现:P274-2811/6/202327(4)客户机的实现:客户机的实现:P281-2871/6/202328本章小结本章小结l.NET开发环境提供了一系列加密算法,编程简便;而且适开发环境提供了一系列加密算法,编程简便;而且适用范围广,在数字信封、数字签名等网络信息传输方面都用范围广,在数字信封、数字签名等网络信息传输方面都可以得到应用。可以得到应用。l在实用上看,混合加密技术非常适合于网络通信领域
23、,在在实用上看,混合加密技术非常适合于网络通信领域,在网络聊天内容的安全控制中起着重要的作用。网络聊天内容的安全控制中起着重要的作用。1/6/202329实验项目实验项目1画出画出混合加密网络传输程序混合加密网络传输程序的流程图,并调试程序。的流程图,并调试程序。2设计一个设计一个数字签名程序数字签名程序,并实现其功能。,并实现其功能。3从从网页保护网页保护的角度,采用报文摘要和非对称加密算法计的角度,采用报文摘要和非对称加密算法计算选定网页的算选定网页的HASH值,获得该网页的唯一性,并存储值,获得该网页的唯一性,并存储在数据库中,为今后网页自动比对提供必要手段。请给在数据库中,为今后网页自动比对提供必要手段。请给出设计流程,并完成一个简单原型。出设计流程,并完成一个简单原型。1/6/202330