C#网络应用编程(第2版)第11章

上传人:飞*** 文档编号:33785881 上传时间:2018-02-17 格式:PPT 页数:44 大小:510.50KB
返回 下载 相关 举报
C#网络应用编程(第2版)第11章 _第1页
第1页 / 共44页
C#网络应用编程(第2版)第11章 _第2页
第2页 / 共44页
C#网络应用编程(第2版)第11章 _第3页
第3页 / 共44页
C#网络应用编程(第2版)第11章 _第4页
第4页 / 共44页
C#网络应用编程(第2版)第11章 _第5页
第5页 / 共44页
点击查看更多>>
资源描述

《C#网络应用编程(第2版)第11章 》由会员分享,可在线阅读,更多相关《C#网络应用编程(第2版)第11章 (44页珍藏版)》请在金锄头文库上搜索。

1、第11章 数据加密与数字签名,11.1 数据加密与解密技术11.2 加密解密的具体实现11.3 网络应用中数据的加密与解密 11.4 Hash算法与数字签名,第11章 数据加密与数字签名(续),本章教学目的 通过学习,使学生能够对数据加密和解密、常用的加密类、如何在网络中传递数据以及数字签名有一个清晰的认识。本章教学要求 (1)掌握数据加密与解密的基本知识 (2)掌握字符串、一般文件、XML文件加密和解密的具体实现。 (3)掌握网络应用中数据的加密与解密的流程 (4)掌握数字签名的概念和Hash算法,了解其他相关知识 (5)掌握怎样进行简单的数字签名 教学难点和重点 加密类和加密、解密方法、网

2、络应用中数据的加密与解密,11.1 数据加密与解密技术,密码学简介据记载,公元前400年,古希腊人发明了置换密码。在第二次世界大战期间,德国军方启用“恩尼格玛”密码机,密码学在战争中起着非常重要的作用。密码学可以达到以下目的: 保密性:防止用户的标识或数据被读取数据完整性:防止数据被更改 。,11.1 数据加密与解密技术(续),1977年,美国国家标准局公布实施了“美国数据加密标准(DES)”,民间力量开始全面介入密码学的研究和应用中,采用的加密算法有DES、SHA等。RC2:由著名密码学家Ron Rivest设计的一种传统对称分组加密算法3DES:基于DES,对一块数据用三个不同的密钥进行三

3、次加密,强度更高 AES:Rijndael被选中成为将来的AES,11.1 数据加密与解密技术,11.1.1 对称加密及其相关类11.1.2 不对称加密及其相关类11.1.3 加密流11.1.4 密钥容器,11.1.1 对称加密及其相关类,对称加密(私钥加密)原理同一密钥既用于加密又用于解密。以块为单位加密数据(称为块密码),该方法一次加密一个数据块(数据多于规定的块大小时,将数据分块处理,数据少于规定的块大小时,将其扩充到块大小)。早期采用密码本(ECB) 模式,即有一个密码对照表,将被加密的数据按照对应关系解密即可,安全性较低。最突出的缺点是相同的原始数据加密后的结果也相同。改进后的算法是

4、密码块链 (CBC,Cipher Block Chaining) 模式,即使用私钥和初始化向量 (IV,Initialization Vector) 共同加密。实现思路:用“IV”和“私钥”加密第一个纯文本块,每个后续纯文本块都在加密前先与前一个密码文本块进行按位“异或”运算,从而解决了ECB模式存在的安全问题,即:虽然原始数据相同,产生的加密后的数据也不会相同。,11.1.1 对称加密及其相关类(续),对称加密(私钥加密) 特点优点:保密强度高,加、解密速度快,适合加密大量数据。缺点:由于双方使用相同的密钥进行加密和解密。在网络传输中,如何传递密钥成为问题所在。如果攻击者截获了密钥,也就等于

5、知道了如何解密数据。,11.1.1 对称加密及其相关类(续),实现对称加密(CBC模式,即“密钥+IV模式”)算法的类有6种:DESCryptoServiceProvider类:DES算法加密类TripleDESCryptoServiceProvider:TDES算法加密类RijndaelManaged:AES算法加密类AesManaged : AES算法加密类(.NET Framework 3.5)RC2CryptoServiceProvider:RC2算法加密类HMACSHA1:SHA1算法(哈希算法)加密类说明:使用IV的目的是为了防范穷举搜索而进行的攻击。,11.1.1 对称加密及其相

6、关类(续),DESCryptoServiceProvider类:对采用数据加密标准(DES,Data Encryption Standard)算法的加密服务提供程序(CSP)版本进行包装(密钥长度为64位), DES是美国1977年公布的加密标准,当时在各超市零售业、银行自动取款机、磁卡及IC卡、加油站、高速公路收费站等领域被广泛应用。说明:该算法如果不使用IV,目前已经有多种破解方法(最快的破解速度据媒体报导是仅用了3天的时间就破解了),但是使用IV生成随机数配合加密后,破解就变得非常困难。,11.1.1 对称加密及其相关类(续),对采用3DES(三层数据加密标准)算法的加密服务提供程序(C

7、SP)进行包装(密钥长度为128位到192位,以64位递增)。3DES对交换的信息进行3次叠代加密,比DES安全性高。常用属性和方法:,11.1.1 对称加密及其相关类(续),说明:(1)如果对数字或其他值类型数据加密,可以利用BinaryWriter先得到字节流,然后对其加密即可。(2)如果对数据库数据加密,只需要将加密后的内容保存到库中即可,读出后再解密。(3)对于其他不同的加密解密类,调用方法都差不多。,11.1.1 对称加密及其相关类(续),RijndaelManaged类:对采用Rijndael的加密服务提供程序(CSP)进行包装(密钥长度为128、192或256位)。 Rijnda

8、el是Vincent Rijmen和Joan Daemen两人提出的加密算法,是最新的高级加密标准之一,比3DES算法更强、更高效。AesManaged类(在.NET Framework 3.5版中引入):对AES算法进行包装。此类的功能与RijndaelManaged类相同,但它将块限制为 128 位,且不允许反馈模式。AES 算法实质上是具有固定块大小和迭代计数的Rijndael对称算法。 说明:加密服务提供程序(CSP,Cryptographic Service Provider)是微软在Windows操作系统中内置的加密处理模块。,11.1.1 对称加密及其相关类(续),RC2Cryp

9、toServiceProvider类:对采用RC2算法的加密服务提供程序(CSP)进行包装(密钥长度为从 40 位到 128 位,以 8 位递增)。RC2是Ron Rivest在1987年设计的一个块密码算法。HMACSHA1类:从 SHA1构造的一种键控哈希算法,被用作HMAC(基于哈希的消息验证代码)。SHA-1(安全哈希算法,也称为安全哈希标准)是由美国政府发布的一种加密哈希算法。它将从任意长度的字符串生成 160 位的哈希值。HMACSHA1 接受任何大小的密钥,并产生长度为 160 位的哈希序列。,11.1.1 对称加密及其相关类(续),六种对称加密类的主要特点:,11.1.2 不对

10、称加密及其相关类,不对称加密(公钥加密)原理使用不同的加密密钥与解密密钥,是一种“由已知加密密钥推导出解密密钥在计算上是不可行的”密码体制。私钥是保密的,公钥是公开的。用公钥加密的数据只能用私钥解密,反之,用私钥加密的数据只能用公钥解密。实现方法:接收方先生成一个公钥/私钥对,在接收被加密的数据前,先将该公钥传递给发送方;注意,从公钥推导出私钥是不可能的,所以不怕通过网络传递时被攻击者截获公钥。发送方得到此公钥后,使用此公钥加密数据,再将加密后的数据通过网络传递给接收方;接收方收到加密后的数据后,再用私钥进行解密。由于没有传递私钥,从而提高了数据的安全性。,11.1.2 不对称加密及其相关类(

11、续),不对称加密(也叫公钥加密)特点优点:密钥位数多,而且无法根据加密密钥推导出解密密钥。从而使保密强度更高。缺点:加、解密速度慢,不适合加密大量数据。,11.1.2 不对称加密及其相关类(续),.NET Framework 提供了以下类来实现不对称加密算法:DSACryptoServiceProvider:DSA算法的加密实现。RSACryptoServiceProvider:RSA算法的加密实现。ECDiffieHellmanCng椭圆曲线 Diffie-Hellman (ECDH) 算法的下一代加密技术 (CNG)加密实现,.NET Framework 3.5版开始提供。 ECDsaCn

12、g 椭圆曲线数字签名算法 (ECDSA) 的下一代加密技术 (CNG) 实现 , .NET Framework 3.5版开始提供。,11.1.2 不对称加密及其相关类(续),RSACryptoServiceProvider类:使用加密服务提供程序 (CSP) 提供的 RSA 算法的实现执行不对称加密和解密。如果安装了 Microsoft Enhanced Cryptographic Provider,则 RSACryptoServiceProvider 支持长度从 384 位至 16384 位(增量为 8 位)的密钥。如果安装了 Microsoft Base Cryptographic Pro

13、vider,则支持长度从 384 位至 512 位(增量为 8 位)的密钥。,11.1.2 不对称加密及其相关类(续),RSACryptoServiceProvider类的常用属性和方法,11.1.3 加密流(CryptoStream),加密流(CryptoStream类):继承Stream类,专用于处理被加密或者被解密的数据,而且只能用于对称加密。 CryptoStream类 public CryptoStream(Stream stream,ICryptoTransform transform,CryptoStreamMode mode)stream:对其执行加密转换的流。Transfor

14、m:要对流执行的加密转换。 Mode:转换方式 ,加密时模式为对写访问模式解密时则为读访问模式。,11.1.3 加密流(CryptoStream),例如(P254):FileStream fStream = File.Open(FileName, FileMode.OpenOrCreate); AesManaged aes = new AesManaged(); CryptoStream cStream = new CryptoStream(fStream, aes.CreateEncryptor(), CryptoStreamMode.Write); sw = new StreamWrite

15、r(cryptoStream); sw.WriteLine(被加密的字符串); 注意:写入完成后,关闭创建的对象,在fStream指向的文件中保存的就是加密后的数据。,11.1.4 密钥容器,密钥容器用于保存不对称加密的密钥。为了区分是哪一个密钥容器,还需要给每个密钥容器起一个名称。在System.Security.Cryptography命名空间中,有一个CspParameters类,可以通过该类提供的属性设置或获取密钥容器的名称。 示例(P185):如何保存RSA不对称加密的密钥到密钥容器中,以及如何从密钥容器中获取密钥信息,11.1.4 密钥容器,public static RSACry

16、ptoServiceProvider GenRSAFromContainer (string ContainerName) / 指定密钥容器的名称,用于保存公钥/私钥对 CspParameters cp = new CspParameters( ); /如不存在名为containerName的密钥容器,则创建它,并初始化cp /如果存在,则直接根据它原来保存的内容初始化cp cp.KeyContainerName = ContainerName; /使用CspParameters对象创建RSACryptoServiceProvider的实例 RSACryptoServiceProvider rsa = new RSACryptoServiceProvider(cp); return rsa;注意:保存密钥信息和获取密钥信息使用的是同一段代码。,

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 资格认证/考试 > 其它考试类文档

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