C#网络编程---第6章 网络数据加密与解密

上传人:飞*** 文档编号:5443311 上传时间:2017-08-07 格式:PPT 页数:33 大小:342KB
返回 下载 相关 举报
C#网络编程---第6章 网络数据加密与解密_第1页
第1页 / 共33页
C#网络编程---第6章 网络数据加密与解密_第2页
第2页 / 共33页
C#网络编程---第6章 网络数据加密与解密_第3页
第3页 / 共33页
C#网络编程---第6章 网络数据加密与解密_第4页
第4页 / 共33页
C#网络编程---第6章 网络数据加密与解密_第5页
第5页 / 共33页
点击查看更多>>
资源描述

《C#网络编程---第6章 网络数据加密与解密》由会员分享,可在线阅读,更多相关《C#网络编程---第6章 网络数据加密与解密(33页珍藏版)》请在金锄头文库上搜索。

1、第6章 网络数据加密与解密,6.1 对称加密 6.2 不对称加密 6.3 通过网络传递加密数据 6.4 Hash算法与数字签名,6.1 对称加密,对称加密也称为私钥加密,采用私钥算法,加密和解密数据使用同一个密钥。 私钥算法以块为单位加密数据,一次加密一个数据块。 .NET类库使用的私钥算法有RC2、DES、TripleDES和Rijndael。这些算法通过加密将n字节的输入块转换为加密字节的输出块。如果要加密或解密字节序列,必须逐块进行。,为了保证数据的安全,.NET基类库中提供的私钥算法类使用称作密码块链(CBC,Cipher Block Chaining)的链模式,算法使用一个密钥和一个

2、初始化向量(IV,Initialization Vector)对数据执行加密转换。密钥和初始化向量IV一起决定如何加密数据,以及如何将数据解密为原始数据。通信双方都必须知道这个密钥和初始化向量才能够加密和解密数据。,6.1 对称加密(续),对称加密算法的优点是保密强度高,加、解密速度快,适合加密大量数据。攻击者如果对加密后的数据进行破译,惟一的办法就是对每个可能的密钥执行穷举搜索。而采用这种加密技术,即使使用最快的计算机执行这种搜索,耗费的时间也相当长。如果使用较大的密钥,破译将会更加困难。,6.1 对称加密(续),在.NET Framework中,公共语言运行时CLR使用面向流的设计实现对称

3、加密,该设计的核心是CryptoStream,实现CryptoStream的任何被加密的对象都可以和实现Stream的任何对象链接起来。实现对称加密算法的类有四种:DESCryptoServiceProvider RC2CryptoServiceProvider RijndaelManaged TripleDESCryptoServiceProvider,6.1 对称加密(续),四种对称加密类的主要特点,TripleDES加密算法介绍,TripleDES使用DES算法的三次连续迭代,支持从128位到192位(以64位递增)的密钥长度,其安全性比DES更高。DES的含义是Data Encrypt

4、ion Standard,是美国1977年公布的一种数据加密标准,DES算法在各超市零售业、银行自动取款机、磁卡及IC卡、加油站、高速公路收费站等领域被广泛应用,以此来实现关键数据的保密,如信用卡持卡人的PIN的加密传输,IC卡的认证、金融交易数据包的MAC校验等,均用到DES算法。DES算法具有非常高的安全性,到目前为止,除了用穷举搜索法对DES算法进行攻击外,还没有发现更有效的办法。,例.使用TripleDES加密算法对输入的字符串进行加密,并输出加密后的字符串和解密后的结果。,namespace TdesEncryptExample public partial class FormTd

5、esEncrypt : Form public FormTdesEncrypt() InitializeComponent(); private void FormTdesEncrypt_Load(object sender, EventArgs e) textBoxEncrypt.ReadOnly = true; textBoxDecrypt.ReadOnly = true; private void buttonOK_Click(object sender, EventArgs e) string str = textBoxInput.Text; if (str.Length = 0) M

6、essageBox.Show(请输入被加密的字符串); return; ,/加密 try TripleDESCryptoServiceProvider tdes = new TripleDESCryptoServiceProvider(); /随机生成密钥Key和初始化向量IV tdes.GenerateKey(); tdes.GenerateIV(); textBoxKey.Text = Encoding.UTF8.GetString(tdes.Key); /得到加密后的字节流 byte encryptedBytes = EncryptText(str, tdes.Key, tdes.IV)

7、; /显示加密后的字符串 textBoxEncrypt.Text = Encoding.UTF8.GetString(encryptedBytes); /解密 string decryptString = DecryptText(encryptedBytes, tdes.Key, tdes.IV); /显示解密后的字符串 textBoxDecrypt.Text = decryptString; ,catch (Exception err) MessageBox.Show(err.Message, 出错); private byte EncryptText(string str, byte Ke

8、y, byte IV) /创建一个内存流 MemoryStream memoryStream = new MemoryStream(); /使用传递的私钥和IV创建加密流 CryptoStream cryptoStream = new CryptoStream(memoryStream, new TripleDESCryptoServiceProvider().CreateEncryptor(Key, IV), CryptoStreamMode.Write); /将传递的字符串转换为字节数组 byte toEncrypt = Encoding.UTF8.GetBytes(str);,try /

9、将字节数组写入加密流,并清除缓冲区 cryptoStream.Write(toEncrypt, 0, toEncrypt.Length); cryptoStream.FlushFinalBlock(); /得到加密后的字节数组 byte encryptedBytes = memoryStream.ToArray(); return encryptedBytes; catch (CryptographicException err) throw new Exception(加密出错: + err.Message); finally cryptoStream.Close(); memoryStre

10、am.Close(); ,private string DecryptText(byte dataBytes, byte Key, byte IV) /根据加密后的字节数组创建一个内存流 MemoryStream memoryStream = new MemoryStream(dataBytes); /使用传递的私钥、IV和内存流创建解密流 CryptoStream cryptoStream = new CryptoStream(memoryStream, new TripleDESCryptoServiceProvider().CreateDecryptor(Key, IV), Crypto

11、StreamMode.Read); /创建一个字节数组保存解密后的数据 byte decryptBytes = new bytedataBytes.Length; try /从解密流中将解密后的数据读到字节数组中 cryptoStream.Read(decryptBytes, 0, decryptBytes.Length); /得到解密后的字符串 string decryptedString = Encoding.UTF8.GetString(decryptBytes); return decryptedString; ,catch (CryptographicException err) t

12、hrow new Exception(解密出错: + err.Message); finally cryptoStream.Close(); memoryStream.Close(); ,不对称加密也叫公钥加密,这种技术使用不同的加密密钥与解密密钥,是一种“由已知加密密钥推导出解密密钥在计算上是不可行的”密码体制。产生的主要原因有两个,一是对称加密的密钥分配问题,另一个是由于对数字签名的需求。 不对称加密使用一个需要保密的私钥和一个可以对任何人公开的公钥,即使用公钥/私钥对来加密和解密数据。公钥和私钥都在数学上相关联,用公钥加密的数据只能用私钥解密,反之,用私钥加密的数据只能用公钥解密。两个密钥对于通信会话都是惟一的。,6.2 不对称加密(续),为什么不对称加密更不容易被攻击呢?关键在于对私钥的管理上。在对称加密中,发送方必须先将解密密钥传递给接收方,接收方才能解密。如果能避免通过不安全的网络传递私钥,就可以解决这个问题。,

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

当前位置:首页 > 中学教育 > 其它中学文档

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