《P10 网络信息加密传输程序设计解读课件.ppt》由会员分享,可在线阅读,更多相关《P10 网络信息加密传输程序设计解读课件.ppt(30页珍藏版)》请在三一办公上搜索。
1、11/30/2022,1,计算机网络编程技术,第10章 网络信息加密传输程序设计,11/30/2022,2,网络攻击类型,网络信息安全: 信息存储安全信息传输安全,11/30/2022,3,本章的主要内容,数据加密模型对称加密程序设计非对称加密程序设计网络信息加密传输程序设计,11/30/2022,4,10.1 数据加密模型,(1) 数据加密模型描述,11/30/2022,5,(2) 对称加密模型,对称加密算法使用起来简单快捷,密钥较短,且破译困难。,11/30/2022,6,常见的对称加密算法,11/30/2022,7,(3) 非对称加密模型,非对称加密算法研制的最初理念与目标是旨在解决对称
2、加密算法中密钥的分发问题.实际上它不但很好地解决了这个问题,还可利用非对称加密算法来完成对电子信息的数字签名以防止对信息的否认与抵赖;同时,还可以利用数字签名较容易地发现攻击者对信息的非法篡改,以保护数据信息的完整性。,11/30/2022,8,(4) 数字签名模型,数字签名一般采用非对称加密技术(如RSA)。,11/30/2022,9,10.2 对称加密程序设计,10.2.1 对称加密算法SymmetricAlgorithm类表示所有对称算法的实现都必须从中继承的抽象基类;派生了DES、Triple-DES、RC2和Rijndael等对称加密算法;来自于System.Security.Cry
3、ptography命名空间。,11/30/2022,10,SymmetricAlgorithm类的主要属性和方法,11/30/2022,11,对称算法的实现:,RijndaelManagedDESCryptoServiceProviderRC2CryptoServiceProviderTripleDESCryptoService Provider,11/30/2022,12,10.2.2 基于流的加密解密方法,由于对称加密往往用于加密大量数据信息,隐藏采用了流式加密方法,以便支持对内存流和文件流等数据的加密和解密。托管对称加密类与称为CryptoStream的特殊流类一起使用。可以使用从Str
4、eam类派生的任何类(包括FileStream、MemorySteam和NetworkStream)初始化CryptoStream类。使用这些类,可以对各种流对象执行对称加密。,11/30/2022,13,(1) 加密过程实例:, 创建对称加密算法实例:cryptoService=new RijndaelManaged();cryptoService.Mode=CipherMode.CBC; /设置为链接模式 设置初始化参数,包括密钥和初始化向量等。cryptoService.Key=GetLegalKey();/设置密钥cryptoService.IV=GetLegalIV();/设置初始向
5、量 创建加密实例:ICryptoTransform cryptoTransform=cryptoService.CreateEncryptor(); 创建加密流:MemoryStream ms=new MemoryStream();/创建内存流CryptoStream cs=new CryptoStream(ms, crytoTransform,CryptoStreamMode.Write); 通过流的写操作实现数据加密:cs.Write(plainByte,0,plainByte.Length);cs.FlushFinalBlock();byte cryptoByte=ms.ToArray(
6、); return Convert.ToBase64String(cryptoByte,0,cryptoByte.GetLength(0);,11/30/2022,14,(2) 解密过程实例, 创建对称加密算法实例:cryptoService=new RijndaelManaged();cryptoService.Mode=CipherMode.CBC; /设置为链接模式 设置初始化参数,包括密钥和初始化向量等。用户设置方法如下:cryptoService.Key=GetLegalKey();/设置密钥cryptoService.IV=GetLegalIV();/设置初始向量 创建解密实例,如
7、:ICryptoTransform cryptoTransform=cryptoService.CreateEncryptor(); 创建解密流,如:MemoryStream ms=new MemoryStream(cryptoByte,0,cryptoByte.Length);/创建内存流CryptoStream cs=new CryptoStream(ms, crytoTransform, CryptoStreamMode.Read); 通过解密流进行数据解密:StreamReader sr=new StreamReader(cs);return sr.ReadToEnd();,11/30
8、/2022,15,10.2.3 对称加密程序设计示例,(1) 命名空间与重要实例using System.Security.Cryptography;using System.IO;RijndaelManaged rij=new RijndaelManaged();,11/30/2022,16,(2) 加密函数,if(textBox.Length=8,11/30/2022,17,(3) 解密函数,if(textBox.Length=8,11/30/2022,18,10.3 非对称加密程序设计,AsymmetricAlgorithm 类表示所有不对称算法的实现都必须从中继承的抽象基类,它派生出R
9、SA和DSA两种加密算法,由System.Security.Cryptography 命名空间提供。RSACryptoServiceProvider类是公钥算法的一个实现类,通常用于数据的加密;DSACryptoServiceProvider类是数字签名算法的一个实现类。,11/30/2022,19,(1) RSACryptoServiceProvider类的主要方法,11/30/2022,20,(2) 一个RSA加密编程实例,该程序具有4个功能:首先是获取公钥/私钥对,并分别保存成文件;对字符串进行加密和解密;对文本文件进行加密和解密;对其他格式文件进行加密和解密。,11/30/2022,2
10、1,密钥产生界面,11/30/2022,22,加密/解密字符串示例,字符串“计算机网络编程代码测试”的加密解密效果:,11/30/2022,23,加密程序部分:,readpublickey=ReadPublicKey();/读取公钥crypt=new RSACryptoServiceProvider(); UTF8Encoding enc=new UTF8Encoding(); bytes=enc.GetBytes(textBox1.Text); crypt.FromXmlString(readpublickey); bytes=crypt.Encrypt(bytes,false); stri
11、ng encryttext=enc.GetString(bytes); richtext2.Text=加密结果:nn+encryttext+nn+加密结束!;,11/30/2022,24,解密程序部分:,readprivatekey=ReadPrivateKey();/读取私钥UTF8Encoding enc=new UTF8Encoding(); byte decryptbyte; crypt.FromXmlString (readprivatekey) ; decryptbyte=crypt.Decrypt( bytes,false ); string decrypttext=enc.Ge
12、tString(decryptbyte); richtext3.Text=解密结果:nn + decrypttext + nn + 解密结束! ;,11/30/2022,25,10.4 网络信息加密传输程序设计,(1) RSA网络加密传输原理,11/30/2022,26,(2) 混合加密技术用于网络传输的工作原理,混合背景:非对称加密算法的计算时间长,对于网络传输信息的实时性有很大影响,所以多用于秘密的加密处理。而对称加密算法的运算效率高,适用于实际信息的加密。,11/30/2022,27,(3) 服务器的实现:P274-281,11/30/2022,28,(4) 客户机的实现:P281-287,11/30/2022,29,本章小结,.NET开发环境提供了一系列加密算法,编程简便;而且适用范围广,在数字信封、数字签名等网络信息传输方面都可以得到应用。在实用上看,混合加密技术非常适合于网络通信领域,在网络聊天内容的安全控制中起着重要的作用。,11/30/2022,30,实验项目,1画出混合加密网络传输程序的流程图,并调试程序。2设计一个数字签名程序,并实现其功能。3从网页保护的角度,采用报文摘要和非对称加密算法计算选定网页的HASH值,获得该网页的唯一性,并存储在数据库中,为今后网页自动比对提供必要手段。请给出设计流程,并完成一个简单原型。,