第11章 数据加密及数字签名_第1页
第11章 数据加密及数字签名_第2页
第11章 数据加密及数字签名_第3页
第11章 数据加密及数字签名_第4页
第11章 数据加密及数字签名_第5页
已阅读5页,还剩39页未读 继续免费阅读

下载本文档

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

文档简介

1、1 1问题的引入问题的引入1、你知道有哪些加密算法?、你知道有哪些加密算法?2、哪些加密算法可以用在网络通信上?、哪些加密算法可以用在网络通信上?3、加密一个特大型的文件(或内容)如何才能保证速度?、加密一个特大型的文件(或内容)如何才能保证速度?4、你了解网银(如、你了解网银(如U盾)的加密方式?盾)的加密方式?5、何为数字签名?都用在什么场合?做什么?、何为数字签名?都用在什么场合?做什么?6、网络传输加密?加密的是文字?字节?流?、网络传输加密?加密的是文字?字节?流?7、你知道什么时对称密钥?、你知道什么时对称密钥?8、你能设计一种安全的加密方式?密钥如何保存?能否做到、你能设计一种安

2、全的加密方式?密钥如何保存?能否做到所有都不知道?所有都不知道?2 2第第11章章 数据加密与数字签名数据加密与数字签名11.1 数据加密与解密技术数据加密与解密技术11.2 加密解密的具体实现加密解密的具体实现11.3 网络应用中数据的加密与解密网络应用中数据的加密与解密 11.4 Hash算法与数字签名算法与数字签名3 3第第11章章 数据加密与数字签名(续)数据加密与数字签名(续) 本章教学目的本章教学目的 通过学习,使学生能够对数据加密和解密、常用的加密类、如何在网通过学习,使学生能够对数据加密和解密、常用的加密类、如何在网络中传递数据以及数字签名有一个清晰的认识。络中传递数据以及数字

3、签名有一个清晰的认识。 本章教学要求本章教学要求 (1)掌握数据加密与解密的基本知识)掌握数据加密与解密的基本知识 (2)掌握字符串、一般文件、)掌握字符串、一般文件、XML文件加密和解密的具体实现。文件加密和解密的具体实现。 (3)掌握网络应用中数据的加密与解密的流程)掌握网络应用中数据的加密与解密的流程 (4)掌握数字签名的概念和)掌握数字签名的概念和Hash算法,了解其他相关知识算法,了解其他相关知识 (5)掌握怎样进行简单的数字签名)掌握怎样进行简单的数字签名 教学难点和重点教学难点和重点 加密类和加密、解密方法、网络应用中数据的加密与解密加密类和加密、解密方法、网络应用中数据的加密与

4、解密4 411.1 数据加密与解密技术数据加密与解密技术 密码学简介据记载,公元前密码学简介据记载,公元前400年,古希腊人发明了置换年,古希腊人发明了置换密码。密码。 在第二次世界大战期间,德国军方启用在第二次世界大战期间,德国军方启用“恩尼格玛恩尼格玛”密码密码机,密码学在战争中起着非常重要的作用。机,密码学在战争中起着非常重要的作用。 密码学可以达到以下目的:密码学可以达到以下目的: 保密性:防止用户的标识或数据被读取保密性:防止用户的标识或数据被读取数据完整性:防止数据被更改数据完整性:防止数据被更改 。5 511.1 数据加密与解密技术(续)数据加密与解密技术(续) 1977年,美国

5、国家标准局公布实施了年,美国国家标准局公布实施了“美国数据加密标准美国数据加密标准(DES)”,民间力量开始全面介入密码学的研究和应用,民间力量开始全面介入密码学的研究和应用中,采用的加密算法有中,采用的加密算法有DES、SHA等。等。 RC2:由著名密码学家:由著名密码学家Ron Rivest设计的一种传统对称分设计的一种传统对称分组加密算法组加密算法 3DES:基于:基于DES,对一块数据用三个不同的密钥进行三,对一块数据用三个不同的密钥进行三次加密,强度更高次加密,强度更高 AES:Rijndael被选中成为将来的被选中成为将来的AES6 611.1 数据加密与解密技术数据加密与解密技术

6、 11.1.1 对称加密及其相关类对称加密及其相关类 11.1.2 不对称加密及其相关类不对称加密及其相关类 11.1.3 加密流加密流 11.1.4 密钥容器密钥容器7 711.1.1 对称加密及其相关类对称加密及其相关类对称加密(私钥加密)原理对称加密(私钥加密)原理 同一密钥既用于加密又用于解密。同一密钥既用于加密又用于解密。 以块为单位加密数据(称为块密码),该方法一次加密一个数以块为单位加密数据(称为块密码),该方法一次加密一个数据块(数据多于规定的块大小时,将数据分块处理,数据少于据块(数据多于规定的块大小时,将数据分块处理,数据少于规定的块大小时,将其扩充到块大小)。规定的块大小

7、时,将其扩充到块大小)。 早期采用早期采用密码本密码本(ECB) 模式,即有一个密码对照表,将被加密模式,即有一个密码对照表,将被加密的数据按照对应关系解密即可,安全性较低。最突出的缺点是的数据按照对应关系解密即可,安全性较低。最突出的缺点是相同的原始数据加密后的结果也相同。相同的原始数据加密后的结果也相同。 改进后的算法是改进后的算法是密码块链密码块链 (CBC,Cipher Block Chaining) 模模式,即使用式,即使用私钥私钥和和初始化向量初始化向量 (IV,Initialization Vector) 共同共同加密。实现思路:用加密。实现思路:用“IV”和和“私钥私钥”加密第

8、一个纯文本块,加密第一个纯文本块,每个后续纯文本块都在加密前先与前一个密码文本块进行按位每个后续纯文本块都在加密前先与前一个密码文本块进行按位“异或异或”运算,从而解决了运算,从而解决了ECB模式存在的安全问题,即:虽模式存在的安全问题,即:虽然原始数据相同,产生的加密后的数据也不会相同。然原始数据相同,产生的加密后的数据也不会相同。8 811.1.1 对称加密及其相关类(续)对称加密及其相关类(续) 对称加密(私钥加密)对称加密(私钥加密) 特点特点优点优点:保密强度高,加、解密速度快,适合加密大量数据。:保密强度高,加、解密速度快,适合加密大量数据。缺点缺点:由于双方使用相同的密钥进行加密

9、和解密。在网络:由于双方使用相同的密钥进行加密和解密。在网络传输中,如何传递密钥成为问题所在。如果攻击者截获了传输中,如何传递密钥成为问题所在。如果攻击者截获了密钥,也就等于知道了如何解密数据。密钥,也就等于知道了如何解密数据。9 911.1.1 对称加密及其相关类(续)对称加密及其相关类(续) 实现对称加密(实现对称加密(CBC模式,即模式,即“密钥密钥+IV模式模式”)算法的类)算法的类有有6种:种: DESCryptoServiceProvider类:类:DES算法加密类算法加密类 TripleDESCryptoServiceProvider:TDES算法加密类算法加密类 Rijndae

10、lManaged:AES算法加密类算法加密类 AesManaged : AES算法加密类算法加密类(.NET Framework 3.5) RC2CryptoServiceProvider:RC2算法加密类算法加密类 HMACSHA1:SHA1算法(哈希算法)加密类算法(哈希算法)加密类 说明:使用说明:使用IV的目的是为了防范穷举搜索而进行的攻击。的目的是为了防范穷举搜索而进行的攻击。101011.1.1 对称加密及其相关类(续)对称加密及其相关类(续) DESCryptoServiceProvider类:类:对采用对采用数据加密标准数据加密标准(DES,Data Encryption St

11、andard)算算法的加密服务提供程序法的加密服务提供程序(CSP)版本进行包装(密钥长度为版本进行包装(密钥长度为64位)位), DES是是美国美国1977年公布的加密标准,当时在各超市零年公布的加密标准,当时在各超市零售业、银行自动取款机、磁卡及售业、银行自动取款机、磁卡及IC卡、加油站、高速公路收卡、加油站、高速公路收费站等领域被广泛应用。费站等领域被广泛应用。 说明:该算法如果不使用说明:该算法如果不使用IV,目前已经有多种破解方法(最,目前已经有多种破解方法(最快的破解速度据媒体报导是仅用了快的破解速度据媒体报导是仅用了3天的时间就破解了),天的时间就破解了),但是使用但是使用IV生

12、成随机数配合加密后,破解就变得非常困难。生成随机数配合加密后,破解就变得非常困难。111111.1.1 对称加密及其相关类(续)对称加密及其相关类(续)对采用对采用3DES(三层数据加密标准)算法(三层数据加密标准)算法的加密服务提供程序的加密服务提供程序(CSP)进行包进行包装(密钥长度为装(密钥长度为128位到位到192位,以位,以64位递增)。位递增)。3DES对交换的信息进行对交换的信息进行3次叠代加密,比次叠代加密,比DES安全性高。常用属性和方法安全性高。常用属性和方法: 名称名称解释解释BlockSize属性属性获取或设置加密操作的块大小,以位为单位获取或设置加密操作的块大小,以

13、位为单位Key属性属性获取或设置获取或设置TripleDES算法的机密密钥算法的机密密钥IV属性属性获取或设置获取或设置TripleDES算法的初始化向量算法的初始化向量KeySize属性属性获取或设置获取或设置TripleDES算法所用密钥的大小,以位为单算法所用密钥的大小,以位为单位位CreateEncryptor方方法法创建创建TripleDES加密器对象加密器对象CreateDecryptor方方法法创建创建TripleDES解密器对象解密器对象GenerateIV方法方法生成用于生成用于TripleDES算法的随机初始化向量算法的随机初始化向量IVGenerateKey方法方法生成用

14、于生成用于TripleDES算法的随机密钥算法的随机密钥121211.1.1 对称加密及其相关类(续)对称加密及其相关类(续) 说明:说明:(1)如果对数字或其他值类型数据加密,可以利用)如果对数字或其他值类型数据加密,可以利用BinaryWriter先得到字节流,然后对其加密即可。先得到字节流,然后对其加密即可。(2)如果对数据库数据加密,只需要将加密后的内容保)如果对数据库数据加密,只需要将加密后的内容保存到库中即可,读出后再解密。存到库中即可,读出后再解密。(3)对于其他不同的加密解密类,调用方法都差不多。)对于其他不同的加密解密类,调用方法都差不多。131311.1.1 对称加密及其相

15、关类(续)对称加密及其相关类(续)RijndaelManaged类:对采用类:对采用Rijndael的加密服务提供程序的加密服务提供程序(CSP)进行进行包装(密钥长度为包装(密钥长度为128、192或或256位)。位)。 Rijndael是是Vincent Rijmen和和Joan Daemen两人提出的加密算法,是最新的高级加密标准之一,比两人提出的加密算法,是最新的高级加密标准之一,比3DES算法更强、更高效。算法更强、更高效。AesManaged类类(在(在.NET Framework 3.5版中引入版中引入):对):对AES算法进行算法进行包装。此类的功能与包装。此类的功能与Rijn

16、daelManaged类相同,但它将块限制为类相同,但它将块限制为 128 位,位,且不允许反馈模式。且不允许反馈模式。AES 算法实质上是具有固定块大小和迭代计数的算法实质上是具有固定块大小和迭代计数的Rijndael对称算法。对称算法。 说明说明:加密服务提供程序加密服务提供程序(CSP,Cryptographic Service Provider)是微软在)是微软在Windows操作系统中内置的加密处理模块。操作系统中内置的加密处理模块。141411.1.1 对称加密及其相关类(续)对称加密及其相关类(续) RC2CryptoServiceProvider类:对采用类:对采用RC2算法算

17、法的加密服的加密服务提供程序务提供程序(CSP)进行包装(密钥长度为从进行包装(密钥长度为从 40 位到位到 128 位,位,以以 8 位递增)。位递增)。RC2是是Ron Rivest在在1987年设计的一个块年设计的一个块密码密码算法。算法。 HMACSHA1类:从类:从 SHA1构造的一种键控哈希算法,被用构造的一种键控哈希算法,被用作作HMAC(基于哈希的消息验证代码)。(基于哈希的消息验证代码)。SHA-1(安全哈希(安全哈希算法,也称为安全哈希标准)是由美国政府发布的一种加密算法,也称为安全哈希标准)是由美国政府发布的一种加密哈希算法。它将从任意长度的字符串生成哈希算法。它将从任意

18、长度的字符串生成 160 位的哈希值。位的哈希值。HMACSHA1 接受任何大小的密钥,并产生长度为接受任何大小的密钥,并产生长度为 160 位的位的哈希序列。哈希序列。151511.1.1 对称加密及其相关类(续)对称加密及其相关类(续)类可用密钥长度(bit)加密算法DESCryptoServiceProvider64DES加密算法TripleDESCryptoServiceProvider128、192(默认)3次DES叠代加密算法RijndaelManaged128、192、256(默认)AES加密算法AesManaged128、192、256(默认)AES加密算法RC2CryptoS

19、erviceProvider40-128(以8位递增),默认128RC2加密算法HMACSHA1任何长度SHA-1加密哈希算法六种对称加密类的主要特点六种对称加密类的主要特点:161611.1.2 不对称加密及其相关类不对称加密及其相关类不对称加密(公钥加密)原理不对称加密(公钥加密)原理 使用不同的加密密钥与解密密钥,是一种使用不同的加密密钥与解密密钥,是一种“由已知加密密钥推由已知加密密钥推导出解密密钥在计算上是不可行的导出解密密钥在计算上是不可行的”密码体制。密码体制。 私钥是保密的,公钥是公开的。用公钥加密的数据只能用私钥私钥是保密的,公钥是公开的。用公钥加密的数据只能用私钥解密,反之

20、,用私钥加密的数据只能用公钥解密。解密,反之,用私钥加密的数据只能用公钥解密。 实现方法:实现方法:接收方先生成一个公钥接收方先生成一个公钥/私钥对,在接收被加密的数据前,先私钥对,在接收被加密的数据前,先将该公钥传递给发送方;注意,从公钥推导出私钥是不可能的,将该公钥传递给发送方;注意,从公钥推导出私钥是不可能的,所以不怕通过网络传递时被攻击者截获公钥。发送方得到此公所以不怕通过网络传递时被攻击者截获公钥。发送方得到此公钥后,使用此公钥加密数据,再将加密后的数据通过网络传递钥后,使用此公钥加密数据,再将加密后的数据通过网络传递给接收方;接收方收到加密后的数据后,再用私钥进行解密。给接收方;接

21、收方收到加密后的数据后,再用私钥进行解密。由于没有传递私钥,从而提高了数据的安全性。由于没有传递私钥,从而提高了数据的安全性。 171711.1.2 不对称加密及其相关类(续)不对称加密及其相关类(续) 不对称加密(也叫公钥加密)不对称加密(也叫公钥加密)特点特点优点优点:密钥位数多,而且无法根据加密密钥推导出解密密:密钥位数多,而且无法根据加密密钥推导出解密密钥。从而使保密强度更高。钥。从而使保密强度更高。缺点缺点:加、解密速度慢,不适合加密大量数据。:加、解密速度慢,不适合加密大量数据。181811.1.2 不对称加密及其相关类(续)不对称加密及其相关类(续) .NET Framework

22、 提供了以下类来实现不对称加密算法:提供了以下类来实现不对称加密算法: DSACryptoServiceProvider:DSA算法的加密实现。算法的加密实现。 RSACryptoServiceProvider:RSA算法的加密实现。算法的加密实现。 ECDiffieHellmanCng椭圆曲线椭圆曲线 Diffie-Hellman (ECDH) 算法的下一代加密技算法的下一代加密技术术 (CNG)加密实现,加密实现,.NET Framework 3.5版开始提供。版开始提供。 ECDsaCng 椭圆曲线数字签名算法椭圆曲线数字签名算法 (ECDSA) 的下一代加密技术的下一代加密技术 (CN

23、G) 实现实现 , .NET Framework 3.5版开始提供。版开始提供。 191911.1.2 不对称加密及其相关类(续)不对称加密及其相关类(续) RSACryptoServiceProvider类:类: 使用加密服务提供程序使用加密服务提供程序 (CSP) 提供的提供的 RSA 算法的实现执算法的实现执行不对称加密和解密。行不对称加密和解密。 如果安装了如果安装了 Microsoft Enhanced Cryptographic Provider,则,则 RSACryptoServiceProvider 支持长度从支持长度从 384 位至位至 16384 位(增量为位(增量为 8

24、位)的密钥。如果安装了位)的密钥。如果安装了 Microsoft Base Cryptographic Provider,则支持长度,则支持长度从从 384 位至位至 512 位(增量为位(增量为 8 位)的密钥。位)的密钥。 202011.1.2 不对称加密及其相关类(续)不对称加密及其相关类(续)RSACryptoServiceProvider类的常用属性和方法类的常用属性和方法名称名称解释解释CspKeyContainerInfo CspKeyContainerInfo 属性属性检索关于加密密钥对的相关信息,如密钥容器名称以及提供程检索关于加密密钥对的相关信息,如密钥容器名称以及提供程序

25、的信息等序的信息等PersistKeyInCspPersistKeyInCsp属性属性密钥是否应该永久驻留在加密服务提供程序密钥是否应该永久驻留在加密服务提供程序(CSP)(CSP)中中PublicOnlyPublicOnly属性属性RSACryptoServiceProviderRSACryptoServiceProvider对象是否仅包含一个公钥对象是否仅包含一个公钥EncryptEncrypt方法方法使用使用RSARSA算法对数据进行加密算法对数据进行加密DecryptDecrypt方法方法使用使用RSARSA算法对数据进行解密算法对数据进行解密ImportParametersImpor

26、tParameters方法方法导入指定的导入指定的RSAParametersRSAParameters。RSAParametersRSAParameters表示表示RSARSA算法涉及算法涉及的相关参数的相关参数ExportParametersExportParameters方法方法导出指定的导出指定的RSAParametersRSAParametersFromXmlStringFromXmlString方法方法通过通过XMLXML字符串中的密钥信息初始化字符串中的密钥信息初始化RSARSA对象对象ToXmlStringToXmlString方法方法创建并返回包含当前创建并返回包含当前RSAR

27、SA对象的密钥的对象的密钥的XMLXML字符串字符串212111.1.3 加密流(加密流(CryptoStream) 加密流(加密流(CryptoStream类)类):继承继承Stream类,专用于处理类,专用于处理被加密或者被解密的数据,而且只能用于对称加密。被加密或者被解密的数据,而且只能用于对称加密。 CryptoStream类类 public CryptoStream(Stream stream,ICryptoTransform transform,CryptoStreamMode mode)stream:对其执行加密转换的流。:对其执行加密转换的流。Transform:要对流执行的加

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

29、yptoStreamMode.Write); sw = new StreamWriter(cryptoStream); sw.WriteLine(被加密的字符串被加密的字符串); 注意:注意:写入完成后,关闭创建的对象,在写入完成后,关闭创建的对象,在fStream指向的文件指向的文件中中保存的就是加密后的数据。保存的就是加密后的数据。232311.1.4 密钥容器密钥容器 密钥容器用于保存不对称加密的密钥。密钥容器用于保存不对称加密的密钥。 为了区分是哪一个密钥容器,还需要给每个密钥容器起一为了区分是哪一个密钥容器,还需要给每个密钥容器起一个名称。在个名称。在System.Security.

30、Cryptography命名空间中,命名空间中,有一个有一个CspParameters类,可以通过该类提供的属性设置类,可以通过该类提供的属性设置或获取密钥容器的名称。或获取密钥容器的名称。 示例(示例(P185):如何保存:如何保存RSA不对称加密的密钥到密钥容不对称加密的密钥到密钥容器中,以及如何从密钥容器中获取密钥信息器中,以及如何从密钥容器中获取密钥信息 242411.1.4 密钥容器密钥容器public static RSACryptoServiceProvider GenRSAFromContainer (string ContainerName) / 指定密钥容器的名称,用于保存

31、公钥指定密钥容器的名称,用于保存公钥/私钥对私钥对 CspParameters cp = new CspParameters( ); /如不存在名为如不存在名为containerName的密钥容器,则创建它,并初始化的密钥容器,则创建它,并初始化cp /如果存在,则直接根据它原来保存的内容初始化如果存在,则直接根据它原来保存的内容初始化cp cp.KeyContainerName = ContainerName; /使用使用CspParameters对象创建对象创建RSACryptoServiceProvider的实例的实例 RSACryptoServiceProvider rsa = new

32、 RSACryptoServiceProvider(cp); return rsa;注意:保存密钥信息和获取密钥信息使用的是同一段代码。注意:保存密钥信息和获取密钥信息使用的是同一段代码。252511.1.4 密钥容器(续)密钥容器(续) 导出密钥方法:导出密钥方法: ToXMLString方法:返回密钥信息的方法:返回密钥信息的XML表示形式。表示形式。 ExportParameters方法:返回保存密钥信息的方法:返回保存密钥信息的RSAParameters结构。结构。 ExportCspBlob方法:返回密钥信息的字节数组。方法:返回密钥信息的字节数组。 这这3个方法都有一个布尔类型的参

33、数,表示导出时是否包个方法都有一个布尔类型的参数,表示导出时是否包含私钥信息。含私钥信息。 导入密钥方法:导入密钥方法: FromXMLString方法方法 ImportParameters方法初始化不对称加密类的实例。方法初始化不对称加密类的实例。 262611.2 加密解密的具体实现加密解密的具体实现 11.2.1 字符串的加密和解密字符串的加密和解密 11.2.2 一般文件的加密和解密一般文件的加密和解密 11.2.3 XML文件的加密和解密文件的加密和解密272712.2.1 字符串的加密和解密字符串的加密和解密 加密字符串的关键问题是如何安全地保存解密密钥、导出加密字符串的关键问题是

34、如何安全地保存解密密钥、导出密钥以及导入密钥。密钥以及导入密钥。 【例例12-1】利用利用RSA不对称加密算法加密字符串,用密钥不对称加密算法加密字符串,用密钥容器保存密钥信息,并能导出和导出密钥,分别输出加密容器保存密钥信息,并能导出和导出密钥,分别输出加密和解密后的结果。和解密后的结果。 图12-1 例12-1的运行效果282811.2.2 一般文件的加密和解密一般文件的加密和解密 对于普通的文件来说,常用有对于普通的文件来说,常用有两种两种加密方式:加密方式: 一种是直接使用一种是直接使用File类提供的静态的类提供的静态的Encrypt方法加密,方法加密,用对应的用对应的Decrypt

35、方法解密。这种方式适用于执行加密和方法解密。这种方式适用于执行加密和解密操作的用户属于同一个操作系统用户,而且当前文件解密操作的用户属于同一个操作系统用户,而且当前文件系统必须格式化为系统必须格式化为NTFS的情况。的情况。 另一种加密方法是先利用对称加密加密文本文件,再利用另一种加密方法是先利用对称加密加密文本文件,再利用不对称加密加密对称加密的不对称加密加密对称加密的KEY和和IV,并将加密后的对称,并将加密后的对称加密的加密的KEY和和IV与加密后的文本文件一起保存。这种方式与加密后的文本文件一起保存。这种方式比较灵活,既适用于同一个用户,也适用于不同的用户,比较灵活,既适用于同一个用户

36、,也适用于不同的用户,而且可以单独保存解密密钥。而且可以单独保存解密密钥。292911.2.2 一般文件的加密和解密(续)一般文件的加密和解密(续)【例例12-2】利用不对称加密算法加密对称加密的密钥利用不对称加密算法加密对称加密的密钥KEY和和IV,再利用对称加密加密文件,输出加密和解密后的结果。,再利用对称加密加密文件,输出加密和解密后的结果。图12-2 例12-2的运行效果303011.2.3 XML文件的加密和解密文件的加密和解密 利用利用XML加密技术,既可以对一个文档中的多个元素进行加密技术,既可以对一个文档中的多个元素进行加密,也可以对同一个元素进行多次加密。加密,也可以对同一个

37、元素进行多次加密。 【例例12-3】用用AES和和RSA算法加密解密算法加密解密XML文件。文件。 加密时,首先生成加密时,首先生成RSA公钥公钥/私钥对,并将其保存到密钥私钥对,并将其保存到密钥容器中,然后使用容器中,然后使用AES算法对算法对XML文档进行加密,再用文档进行加密,再用RSA公钥对公钥对AES密钥进行加密,最后将加密后的密钥进行加密,最后将加密后的AES密密钥和加密后的钥和加密后的XML数据保存到数据保存到XML文档中的文档中的元素中。元素中。 解密解密XML元素时,先从密钥容器中检索出先前生成的元素时,先从密钥容器中检索出先前生成的RSA私钥,然后用该私钥,然后用该RSA密

38、钥对存储在密钥对存储在元素的元素的元素中的元素中的AES密钥进行解密,最后用该密钥解密密钥进行解密,最后用该密钥解密XML元素。元素。 313111.2.3 XML文件的加密和解密(续)文件的加密和解密(续)图12-3 例12-3的运行效果323211.3 XML文件的加密和解密(续)文件的加密和解密(续)注意:注意: 不要以纯文本格式存储对称加密密钥,也不要用纯文本在不要以纯文本格式存储对称加密密钥,也不要用纯文本在计算机之间传输对称密钥。另外,不要用纯文本存储或传计算机之间传输对称密钥。另外,不要用纯文本存储或传输非对称密钥对的私钥。输非对称密钥对的私钥。 不要将密钥直接嵌入到源代码中。可

39、以通过使用不要将密钥直接嵌入到源代码中。可以通过使用 MSIL 反反汇编程序汇编程序 (Ildasm.exe),或通过在诸如,或通过在诸如“记事本记事本”的文本的文本编辑器中打开程序集,从程序集轻松读取嵌入的密钥。编辑器中打开程序集,从程序集轻松读取嵌入的密钥。 密钥容器保存密钥密钥容器保存密钥333311.3 网络应用中数据的加密解密网络应用中数据的加密解密目标:目标:A希望将大量加密后的数据传递给希望将大量加密后的数据传递给B。由于数据量大,。由于数据量大,A需要使用需要使用对称加密算法对数据加密。对称加密算法对数据加密。引出问题:引出问题:B如何得到如何得到A采用的对称加密的密钥和采用的

40、对称加密的密钥和IV,以便用此密钥和,以便用此密钥和IV解密解密加密后的数据,而且截获者又无法破译对称加密的密钥和加密后的数据,而且截获者又无法破译对称加密的密钥和IV解决办法:解决办法:对于不对称加密,用公钥加密的数据只能用私钥解密。对于不对称加密,用公钥加密的数据只能用私钥解密。根据这个原理,根据这个原理,B可以先生成一个公钥可以先生成一个公钥/私钥对,然后将公钥传递私钥对,然后将公钥传递给给A,A用此公钥加密对称加密用的密钥和用此公钥加密对称加密用的密钥和IV,并将加密后的对称,并将加密后的对称加密用的密钥和加密用的密钥和IV传递给传递给B,然后传递加密的数据。,然后传递加密的数据。A接

41、收后,先接收后,先用原来自己生成的私钥解密对称加密用的密钥和用原来自己生成的私钥解密对称加密用的密钥和IV,再用此密钥,再用此密钥和和IV解密随后接收的数据。(注意:关键是没有传递私钥)解密随后接收的数据。(注意:关键是没有传递私钥)343411.3 网络应用中数据的加密解密(续)网络应用中数据的加密解密(续) 一般实现方案为:一般实现方案为:(1)传输双方均各自生成一个公钥)传输双方均各自生成一个公钥/私钥对。私钥对。(2)通过)通过TCP交换公钥。交换公钥。(3)双方各自生成一个对称加密用的密钥,并使用对方的公)双方各自生成一个对称加密用的密钥,并使用对方的公钥加密新创建的密钥。钥加密新创

42、建的密钥。(4)双方将加密后的对称加密用的密钥发送给对方,以便对)双方将加密后的对称加密用的密钥发送给对方,以便对方利用此密钥解密。方利用此密钥解密。(5)双方使用对称加密进行会话。)双方使用对称加密进行会话。353511.3 网络应用中数据的加密解密(续)网络应用中数据的加密解密(续) 数据加密与解密的网络传输过程数据加密与解密的网络传输过程 字节序列网络流发送加密的数据计算发送数据量内存流加密读取加密的数据网络流读取数据量大小小解密内存流字节序列发送方 接收方数据数据图12-4 数据加密与解密的网络传输过程363611.3 网络应用中数据的加密解密(续)网络应用中数据的加密解密(续) 简化

43、后的设计思路简化后的设计思路为:为:(1)客户端生成一个使用)客户端生成一个使用RSA算法的不对称加密的公钥算法的不对称加密的公钥/私私钥对,然后通过钥对,然后通过TCP将公钥发送到服务器端。将公钥发送到服务器端。(2)服务器端用客户端发送的公钥初始化)服务器端用客户端发送的公钥初始化RSA对象。然后对象。然后利用此对象加密使用利用此对象加密使用TripleDES算法的对称加密的密钥。算法的对称加密的密钥。(3)服务器端将加密后的对称加密的密钥发送到客户端,)服务器端将加密后的对称加密的密钥发送到客户端,客户端利用客户端利用RSA的私钥解密的私钥解密TripleDES密钥,并用此密钥密钥,并用

44、此密钥初始化初始化TripleDES对象。对象。(4)双方使用对称加密算法加密对话内容,并将加密后的)双方使用对称加密算法加密对话内容,并将加密后的对话内容发送给对方。对话内容发送给对方。(5)接收方接收到加密后的对话内容后,利用对称加密算)接收方接收到加密后的对话内容后,利用对称加密算法解密对话内容,并显示解密前和解密后的结果。法解密对话内容,并显示解密前和解密后的结果。 373711.3 网络应用中数据的加密解密(续)网络应用中数据的加密解密(续)【例例12-412-4】利用同步利用同步TCPTCP传递会话数据。要求使用不对称加密传递会话数据。要求使用不对称加密算法加密对称加密算法的密钥,

45、使用对称加密算法加密会话信算法加密对称加密算法的密钥,使用对称加密算法加密会话信息。息。 图12-7 例12-4的运行效果383811.4 Hash算法与数字签名算法与数字签名 问题引出:问题引出:通过通过Internet下载文件后,怎样知道下载的文件是否和原下载文件后,怎样知道下载的文件是否和原始文件完全相同呢?或者说,发送方通过始文件完全相同呢?或者说,发送方通过Internet发送数发送数据后,接收方如何判断接收的数据在网络传输过程中是否据后,接收方如何判断接收的数据在网络传输过程中是否被修改过?被修改过? 解决办法:解决办法:利用数字签名技术。利用数字签名技术。 与与Hash算法的关系

46、:算法的关系:数字签名是利用不对称加密和数字签名是利用不对称加密和Hash算法共同实现的。算法共同实现的。 393911.4 Hash算法与数字签名(续)算法与数字签名(续) 什么是什么是Hash算法算法Hash算法也叫散列算法,其功能是把任意长度的二进制值算法也叫散列算法,其功能是把任意长度的二进制值映射为较小的固定长度的二进制值,实现原理就是提供一种数映射为较小的固定长度的二进制值,实现原理就是提供一种数据内容和数据存放地址之间的映射关系。利用据内容和数据存放地址之间的映射关系。利用Hash算法得到算法得到的这个固定长度的较小的二进制值叫的这个固定长度的较小的二进制值叫Hash值。值。404011.4 Hash算法与数字签名(续)算法与数字签名(续)Hash算法的特点:算法的特点:(1)散列效果好。即使原始数据只发生一个小小的改动,数据的散列也)散列效果好。即使原始数据只发生一个小小的改动,数据的散列也会发生非常大的变化。会发生非常大的变化。(2)散列函数不可逆。即不可能从散列结果推导出原始数据。)散列函数不可逆。即不可能从散列结果推导出原始数据。(3)对不同的数据进行)对不同的数据进行Hash运算不可能生成相同的运算不可能生成相同的Hash值。值。(4)Hash算法的用途主要有两大类:一类是将算法的

温馨提示

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

评论

0/150

提交评论