欢迎来到天天文库
浏览记录
ID:41355326
大小:346.00 KB
页数:33页
时间:2019-08-22
《第6章 网络数据加密与解密》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、第6章网络数据加密与解密6.1对称加密6.2不对称加密6.3通过网络传递加密数据6.4Hash算法与数字签名6.1对称加密对称加密也称为私钥加密,采用私钥算法,加密和解密数据使用同一个密钥。私钥算法以块为单位加密数据,一次加密一个数据块。.NET类库使用的私钥算法有RC2、DES、TripleDES和Rijndael。这些算法通过加密将n字节的输入块转换为加密字节的输出块。如果要加密或解密字节序列,必须逐块进行。为了保证数据的安全,.NET基类库中提供的私钥算法类使用称作密码块链(CBC,CipherBl
2、ockChaining)的链模式,算法使用一个密钥和一个初始化向量(IV,InitializationVector)对数据执行加密转换。密钥和初始化向量IV一起决定如何加密数据,以及如何将数据解密为原始数据。通信双方都必须知道这个密钥和初始化向量才能够加密和解密数据。6.1对称加密(续)对称加密算法的优点是保密强度高,加、解密速度快,适合加密大量数据。攻击者如果对加密后的数据进行破译,惟一的办法就是对每个可能的密钥执行穷举搜索。而采用这种加密技术,即使使用最快的计算机执行这种搜索,耗费的时间也相当长。如果
3、使用较大的密钥,破译将会更加困难。6.1对称加密(续)在.NETFramework中,公共语言运行时CLR使用面向流的设计实现对称加密,该设计的核心是CryptoStream,实现CryptoStream的任何被加密的对象都可以和实现Stream的任何对象链接起来。实现对称加密算法的类有四种:DESCryptoServiceProviderRC2CryptoServiceProviderRijndaelManagedTripleDESCryptoServiceProvider6.1对称加密(续)四种对称加
4、密类的主要特点类可用密钥长度(bit)加密算法DESCryptoServiceProvider64DES加密算法RC2CryptoServiceProvider40-128(每8位递增)RC2加密算法RijndaelManaged128-256(每64位递增)Rijndael加密算法TripleDESCryptoServiceProvider128-192(每64位递增)三重DES加密算法TripleDES加密算法介绍TripleDES使用DES算法的三次连续迭代,支持从128位到192位(以64位递增)
5、的密钥长度,其安全性比DES更高。DES的含义是DataEncryptionStandard,是美国1977年公布的一种数据加密标准,DES算法在各超市零售业、银行自动取款机、磁卡及IC卡、加油站、高速公路收费站等领域被广泛应用,以此来实现关键数据的保密,如信用卡持卡人的PIN的加密传输,IC卡的认证、金融交易数据包的MAC校验等,均用到DES算法。DES算法具有非常高的安全性,到目前为止,除了用穷举搜索法对DES算法进行攻击外,还没有发现更有效的办法。例.使用TripleDES加密算法对输入的字符串进行
6、加密,并输出加密后的字符串和解密后的结果。namespaceTdesEncryptExample{publicpartialclassFormTdesEncrypt:Form{publicFormTdesEncrypt(){InitializeComponent();}privatevoidFormTdesEncrypt_Load(objectsender,EventArgse){textBoxEncrypt.ReadOnly=true;textBoxDecrypt.ReadOnly=true;}priv
7、atevoidbuttonOK_Click(objectsender,EventArgse){stringstr=textBoxInput.Text;if(str.Length==0){MessageBox.Show("请输入被加密的字符串");return;}//加密try{TripleDESCryptoServiceProvidertdes=newTripleDESCryptoServiceProvider();//随机生成密钥Key和初始化向量IVtdes.GenerateKey();tdes.Ge
8、nerateIV();textBoxKey.Text=Encoding.UTF8.GetString(tdes.Key);//得到加密后的字节流byte[]encryptedBytes=EncryptText(str,tdes.Key,tdes.IV);//显示加密后的字符串textBoxEncrypt.Text=Encoding.UTF8.GetString(encryptedBytes);//解密stringdecrypt
此文档下载收益归作者所有