.NETC#DES入门浅析

C# DES加密应该是最基础的加密算法,为了搞清楚它在.NET C#里面的用法,我费了不少功夫,希望有心人能看到。C# DES一共就有4个参数参与运作:明文、密文、密钥、向量。为了初学者容易理解,可以把4个参数的关系写成:密文=明文+密钥+向量;明文=密文-密钥-向量。为什么要向量这个参数呢?因为如果有一篇文章,有几个词重复,那么这个词加上密钥形成的密文,仍然会重复,这给破解者有机可乘,破解者可以根据重复的内容,猜出是什么词,然而一旦猜对这个词,那么,他就能算出密钥,整篇文章就被破解了!加上向量这个参数以后,每块文字段都会依次加上一段值,这样,即使相同的文字,加密出来的密文,也是不一样的,算法的安全性大大提高!

下面C# DES的应用实例:

 
 
 
  1.  using System;
  2. //这个是使用DES的基础
  3. using System.Security.Cryptography;
  4. //这个是处理文字编码的前提
  5. using System.Text;
  6. //以“流”的形式处理文字,也是微软DES算法要求的
  7. using System.IO;
  8. /// 
  9. /// C# DES加密方法
  10. ///
  11.  
  12. ///  明文  
  13. ///  密钥  
  14. ///  向量  
  15. ///  密文
  16. public string DESEncrypt(string strPlain,
  17. string strDESKey,string strDESIV)
  18. {
  19.  //把密钥转换成字节数组
  20.  byte[] bytesDESKey=ASCIIEncoding.ASCII.GetBytes(strDESKey);
  21.  //把向量转换成字节数组
  22.  byte[] bytesDESIV=ASCIIEncoding.ASCII.GetBytes(strDESIV);
  23.  //声明1个新的DES对象
  24.  DESCryptoServiceProvider desEncrypt=new DESCryptoServiceProvider();
  25.  //开辟一块内存流
  26.  MemoryStream msEncrypt=new MemoryStream();
  27.  //把内存流对象包装成加密流对象
  28.  CryptoStream csEncrypt=new CryptoStream(
  29. msEncrypt,desEncrypt.CreateEncryptor(
  30. bytesDESKey,bytesDESIV),CryptoStreamMode.Write);
  31.  //把加密流对象包装成写入流对象
  32.  StreamWriter swEncrypt=new StreamWriter(csEncrypt);
  33.  //写入流对象写入明文
  34.  swEncrypt.WriteLine(strPlain);
  35.  //写入流关闭
  36.  swEncrypt.Close();
  37.  //加密流关闭
  38.  csEncrypt.Close();
  39.  //把内存流转换成字节数组,内存流现在已经是密文了
  40.  byte[] bytesCipher=msEncrypt.ToArray();
  41.  //内存流关闭
  42.  msEncrypt.Close();
  43.  //把密文字节数组转换为字符串,并返回
  44.  return UnicodeEncoding.Unicode.GetString(bytesCipher);
  45. }
  46. /// 
  47. /// C# DES解密方法
  48. ///
  49.  
  50. ///  密文  
  51. ///  密钥  
  52. ///  向量  
  53. ///  明文
  54. public string DESDecrypt(string strCipher,
  55. string strDESKey,string strDESIV)
  56. {
  57.  //把密钥转换成字节数组
  58.  byte[] bytesDESKey=ASCIIEncoding.ASCII.GetBytes(strDESKey);
  59.  //把向量转换成字节数组
  60.  byte[] bytesDESIV=ASCIIEncoding.ASCII.GetBytes(strDESIV);
  61.  //把密文转换成字节数组
  62.  byte[] bytesCipher=UnicodeEncoding.Unicode.GetBytes(strCipher);
  63.  //声明1个新的DES对象
  64.  DESCryptoServiceProvider desDecrypt=new DESCryptoServiceProvider();
  65.  //开辟一块内存流,并存放密文字节数组
  66.  MemoryStream msDecrypt=new MemoryStream(bytesCipher);
  67.  //把内存流对象包装成解密流对象
  68.  CryptoStream csDecrypt=new CryptoStream(
  69. msDecrypt,desDecrypt.CreateDecryptor(
  70. bytesDESKey,bytesDESIV),CryptoStreamMode.Read);
  71.  //把解密流对象包装成读出流对象
  72.  StreamReader srDecrypt=new StreamReader(csDecrypt);
  73.  //明文=读出流的读出内容
  74.  string strPlainText=srDecrypt.ReadLine();
  75.  //读出流关闭
  76.  srDecrypt.Close();
  77.  //解密流关闭
  78.  csDecrypt.Close();
  79.  //内存流关闭
  80.  msDecrypt.Close();
  81.  //返回明文
  82.  return strPlainText;
  83. }

C# DES的应用及入门的基本内容就向你介绍到这里,希望对你了解和学习C# DES有所帮助。

本文名称:.NETC#DES入门浅析
本文路径:http://www.csdahua.cn/qtweb/news32/344332.html

网站建设、网络推广公司-快上网,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 快上网