关闭

关闭

关闭

封号提示

内容

首页 C#网络应用高级编程 教学课件 ppt 作者 马骏 郑逢斌 沈夏炯1 第6章 网络数据加密与解…

C#网络应用高级编程 教学课件 ppt 作者 马骏 郑逢斌 沈夏炯1 第6章 网络数据加密与解密.ppt.ppt

C#网络应用高级编程 教学课件 ppt 作者 马骏 郑逢斌 …

希望
2019-09-15 0人阅读 举报 0 0 暂无简介

简介:本文档为《C#网络应用高级编程 教学课件 ppt 作者 马骏 郑逢斌 沈夏炯1 第6章 网络数据加密与解密.pptppt》,可适用于高等教育领域

吉林快3—吉林快三拥有大量关于C#网络应用高级编程 教学课件 ppt 作者 马骏 郑逢斌 沈夏炯1 第6章 网络数据加密与解密.ppt.ppt的实用类文档资料,所有文档由知名合作机构以及专业作者提供,线上总资料超过两个亿,保证满足您的需求。

*第章网络数据加密与解密对称加密不对称加密通过网络传递加密数据Hash算法与数字签名*对称加密对称加密也称为私钥加密采用私钥算法加密和解密数据使用同一个密钥。私钥算法以块为单位加密数据一次加密一个数据块。NET类库使用的私钥算法有RC、DES、TripleDES和Rijndael。这些算法通过加密将n字节的输入块转换为加密字节的输出块。如果要加密或解密字节序列必须逐块进行。*对称加密(续)为了保证数据的安全NET基类库中提供的私钥算法类使用称作密码块链(CBCCipherBlockChaining)的链模式算法使用一个密钥和一个初始化向量(IVInitializationVector)对数据执行加密转换。密钥和初始化向量IV一起决定如何加密数据以及如何将数据解密为原始数据。通信双方都必须知道这个密钥和初始化向量才能够加密和解密数据。*对称加密(续)对称加密算法的优点是保密强度高加、解密速度快适合加密大量数据。攻击者如果对加密后的数据进行破译惟一的办法就是对每个可能的密钥执行穷举搜索。而采用这种加密技术即使使用最快的计算机执行这种搜索耗费的时间也相当长。如果使用较大的密钥破译将会更加困难。*对称加密(续)在NETFramework中公共语言运行时CLR使用面向流的设计实现对称加密该设计的核心是CryptoStream实现CryptoStream的任何被加密的对象都可以和实现Stream的任何对象链接起来。实现对称加密算法的类有四种:   DESCryptoServiceProvider   RCCryptoServiceProvider   RijndaelManaged   TripleDESCryptoServiceProvider*四种对称加密类的主要特点*TripleDES加密算法介绍TripleDES使用DES算法的三次连续迭代支持从位到位(以位递增)的密钥长度其安全性比DES更高。DES的含义是DataEncryptionStandard是美国年公布的一种数据加密标准DES算法在各超市零售业、银行自动取款机、磁卡及IC卡、加油站、高速公路收费站等领域被广泛应用以此来实现关键数据的保密如信用卡持卡人的PIN的加密传输IC卡的认证、金融交易数据包的MAC校验等均用到DES算法。DES算法具有非常高的安全性到目前为止除了用穷举搜索法对DES算法进行攻击外还没有发现更有效的办法。*例使用TripleDES加密算法对输入的字符串进行加密并输出加密后的字符串和解密后的结果。 *namespaceTdesEncryptExample{publicpartialclassFormTdesEncrypt:Form{publicFormTdesEncrypt(){InitializeComponent()}privatevoidFormTdesEncryptLoad(objectsender,EventArgse){textBoxEncryptReadOnly=truetextBoxDecryptReadOnly=true}privatevoidbuttonOKClick(objectsender,EventArgse){stringstr=textBoxInputTextif(strLength==){MessageBoxShow(请输入被加密的字符串)return}*加密try{TripleDESCryptoServiceProvidertdes=newTripleDESCryptoServiceProvider()随机生成密钥Key和初始化向量IVtdesGenerateKey()tdesGenerateIV()textBoxKeyText=EncodingGetString(tdesKey)得到加密后的字节流byteencryptedBytes=EncryptText(str,tdesKey,tdesIV)显示加密后的字符串textBoxEncryptText=EncodingGetString(encryptedBytes)解密stringdecryptString=DecryptText(encryptedBytes,tdesKey,tdesIV)显示解密后的字符串textBoxDecryptText=decryptString}*catch(Exceptionerr){MessageBoxShow(errMessage,出错)}}privatebyteEncryptText(stringstr,byteKey,byteIV){创建一个内存流MemoryStreammemoryStream=newMemoryStream()使用传递的私钥和IV创建加密流CryptoStreamcryptoStream=newCryptoStream(memoryStream,newTripleDESCryptoServiceProvider()CreateEncryptor(Key,IV),CryptoStreamModeWrite)将传递的字符串转换为字节数组bytetoEncrypt=EncodingGetBytes(str)*   try{将字节数组写入加密流,并清除缓冲区cryptoStreamWrite(toEncrypt,,toEncryptLength)cryptoStreamFlushFinalBlock()得到加密后的字节数组byteencryptedBytes=memoryStreamToArray()returnencryptedBytes}catch(CryptographicExceptionerr){thrownewException(加密出错:errMessage)}finally{cryptoStreamClose()memoryStreamClose()}}*privatestringDecryptText(bytedataBytes,byteKey,byteIV){根据加密后的字节数组创建一个内存流MemoryStreammemoryStream=newMemoryStream(dataBytes)使用传递的私钥、IV和内存流创建解密流CryptoStreamcryptoStream=newCryptoStream(memoryStream,newTripleDESCryptoServiceProvider()CreateDecryptor(Key,IV),CryptoStreamModeRead)创建一个字节数组保存解密后的数据bytedecryptBytes=newbytedataBytesLengthtry{从解密流中将解密后的数据读到字节数组中cryptoStreamRead(decryptBytes,,decryptBytesLength)得到解密后的字符串stringdecryptedString=EncodingGetString(decryptBytes)returndecryptedString}*catch(CryptographicExceptionerr){thrownewException(解密出错:errMessage)}finally{cryptoStreamClose()memoryStreamClose()}}}}*不对称加密(续)不对称加密也叫公钥加密这种技术使用不同的加密密钥与解密密钥是一种ldquo由已知加密密钥推导出解密密钥在计算上是不可行的rdquo密码体制。产生的主要原因有两个一是对称加密的密钥分配问题另一个是由于对数字签名的需求。不对称加密使用一个需要保密的私钥和一个可以对任何人公开的公钥即使用公钥私钥对来加密和解密数据。公钥和私钥都在数学上相关联用公钥加密的数据只能用私钥解密反之用私钥加密的数据只能用公钥解密。两个密钥对于通信会话都是惟一的。*不对称加密(续)为什么不对称加密更不容易被攻击呢?关键在于对私钥的管理上。在对称加密中发送方必须先将解密密钥传递给接收方接收方才能解密。如果能避免通过不安全的网络传递私钥就可以解决这个问题。使用不对称加密算法加密数据后私钥不是发送方传递给接收方的而是接收方先生成一个公钥私钥对在接收被加密的数据前先将该公钥传递给发送方注意从公钥推导出私钥是不可能的所以不怕通过网络传递时被攻击者截获公钥。发送方得到此公钥后使用此公钥加密数据再将加密后的数据通过网络传递给接收方接收方收到加密后的数据后再用私钥进行解密。由于没有传递私钥从而保证了数据安全性。*不对称加密(续)NETFramework提供以下实现不对称加密算法的类:   DSACryptoServiceProvider   RSACryptoServiceProvider*RSACryptoServiceProvider类的使用方法RSACryptoServiceProvider类使用加密服务提供程序提供的RSA算法实现不对称加密和解密。加密服务提供程序CSP(CryptographicServiceProvider)是微软在Windows操作系统中内置的加密处理模块RSACryptoServiceProvider类已经对其提供的相关接口和参数进行了封装所以即使我们不知道CSP内部是如何实现的也一样可以使用其提供的功能。* 例利用不对称加密算法加密指定的字符串并输出加密和解密后的结果*namespaceRsaEncryptExample{publicpartialclassFormRsaEncrypt:Form{publicFormRsaEncrypt(){InitializeComponent()thisText=RSA加密解密textBoxEncryptReadOnly=truetextBoxDecryptReadOnly=true}*privatevoidbuttonOKClick(objectsender,EventArgse){使用默认密钥创建RSACryptoServiceProvider对象RSACryptoServiceProviderrsa=newRSACryptoServiceProvider()显示包含公钥私钥对的XML表示形式如果只显示公钥将参数改为false即可richTextBoxKeysText=rsaToXmlString(true)将被加密的字符串转换为字节数组bytedataToEncrypt=EncodingGetBytes(textBoxInputText)try{得到加密后的字节数组byteencryptedData=rsaEncrypt(dataToEncrypt,false)textBoxEncryptText=EncodingGetString(encryptedData)得到解密后的字节数组bytedecryptedData=rsaDecrypt(encryptedData,false)textBoxDecryptText=EncodingGetString(decryptedData)}*catch(Exceptionerr){MessageBoxShow(errMessage)}}}}*通过网络传递加密数据虽然不对称加密解决了用对称加密传递消息必须传递密钥的问题但是由于不对称加密无法使用流进行处理因此与对称加密相比效率较低不适用于加密大量数据的场合。在实际应用中一般将两种加密方法配合使用。其基本思想是:用不对称加密算法加密对称加密的密钥用对称加密算法加密实际数据。*通过网络传递加密数据(续)具体设计思路可以简单描述为:A和B相互传递加密的数据前B首先生成一个不对称加密算法使用的公钥私钥对假定公钥为publicKey私钥为privateKey然后B将公钥publicKey通过网络传递给AA接收到此公钥后根据此公钥初始化不对称加密对象并用此对象加密使用对称加密算法的密钥key并将加密后的密钥key通过网络传递给B这样A和B都有了一个共同使用的对称加密的密钥然后双方用此密钥加密数据并将加密后的数据传递给对方对方收到加密后的数据后再用密钥key解密数据。*通过网络传递加密数据(续)通过这种方式在不安全的网络上传递加密后的数据时虽然攻击者可以截获公钥但是由于用公钥加密的数据只能用私钥解密而私钥并没有通过网络传递因此攻击者无法通过公钥publicKey破译加密后的密钥key因此也无法破译加密的消息。在实际应用中一般使用TCP协议通过网络传输数据。对于比较重要的数据必须进行加密解密处理。一般实现方案为:  )传输双方均各自生成一个公钥私钥对。*通过网络传递加密数据(续)  )通过TCP协议交换公钥。  )双方各自生成一个对称加密用的私钥并使用对方的公钥加密新创建的私钥。 )双方将加密后的对称加密用的私钥发送给对方以便对方利用此私钥解密。 )双方使用对称加密进行会话。*数据加密与解密的网络传输过程*Hash算法与数字签名通过Internet下载文件后怎样知道下载的文件是否和原始文件完全相同呢?或者说发送方通过Internet发送数据后接收方如何验证接收的数据是否和原始数据完全相同呢?这就是数字签名的用途。数字签名是利用不对称加密和Hash算法共同实现的。*Hash算法与数字签名(续)Hash算法也叫散列算法其功能是把任意长度的二进制值映射为较小的固定长度的二进制值实现原理就是提供一种数据内容和数据存放地址之间的映射关系。利用Hash算法得到的这个固定长度的较小的二进制值叫Hash值。Hash算法具有如下特点:)散列效果好。即使原始数据只发生一个小小的改动数据的散列也会发生非常大的变化。假如两个单词非常相似比如只有一个字母不同使用Hash算法得到的结果也相差甚远。甚至根本看不出二者之间有什么相似之处。)散列函数不可逆。既不可能从散列结果推导出原始数据。)对不同的数据进行Hash运算不可能生成相同的Hash值。*Hash算法与数字签名(续)Hash算法的用途主要有两大类:一类是将Hash值作为消息身份验证代码(MACMessageAuthenticationCode)用于和数字签名一起实现对消息数据进行身份验证另一类是将Hash值作为消息检测代码(MDCMessageDetectionCode)用于检测数据完整性。在程序中可以利用数字签名实现数据身份验证和数据完整性验证。数据身份验证是为了验证数据是不是持有私钥的人发送的数据完整性验证则用于验证数据在传输过程中是否被修改过。*Hash算法与数字签名(续)验证数据完整性的实现原理:发送方先使用Hash算法对数据进行Hash运算得到数据的Hash值然后将数据和Hash值一块发送给接收方接收方接收到数据和Hash值后对接收的数据进行和发送方相同的Hash运算然后将计算得到的Hash值和接收的哈希值进行比较如果二者一致说明收到的数据肯定与发送方发送的原始数据相同从而说明数据是完整的。

类似资料

该用户的其他资料

2015.11创新杯创新杯说课大赛国赛说课课件.ppt

19--课程..创新杯说课大赛国赛说课课件.ppt

2014创新杯直线的倾斜角与斜率课程创新杯说课大赛国赛说课课件.ppt

13幼师3 住创新杯说课大赛国赛说课课件.ppt

2010血栓的形成讲课曹颜冬创新杯说课大赛国赛说课课件.ppt

职业精品

精彩专题

让你惊艳又清新的英文短诗合集

让你清新惊艳的英文小诗有哪些呢?小编汇集了以下经典英文诗、唯美爱情小诗、英文诗押韵技巧等等,让爱好英文短诗的你能够一起体验其中的乐趣!

用户评论

0/200
上传我的资料

热门资料排行换一换

  • 一站到底(文学1)

  • 1、燕子教学设计

  • 大学现代汉语多项选择题

  • 黑白胶卷(底片)冲洗放大方法

  • 矿机设备托管协议

  • DSP2数据存储器和程序存储器实验

  • 晋王羲之

  • 中考名著阅读:《水浒》《西游记》篇

  • 你说我猜111

  • 资料评价:

    / 31
    所需积分:0 立即下载

    VIP

    在线
    客服

    免费
    邮箱

    吉林快3—吉林快三服务号

    扫描关注领取更多福利