.NET C# DES入门浅析

开发 后端
C# DES是什么呢?C# DES的应用又是如何呢?这里向你详细介绍了一个C# 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有所帮助。

【编辑推荐】

  1. C#MSN插件开发实例解析
  2. C#DES算法概念及特点浅析
  3. C#DES算法加密解密实例解析
  4. C#DES算法实例解析
  5. C#DES加密解密的实现实例浅析
责任编辑:仲衡 来源: CSDN博客
相关推荐

2009-08-25 17:59:49

C#入门

2009-08-26 14:16:17

C# FrameWor

2009-08-21 17:19:36

C#网络编程入门

2009-08-17 18:34:50

C# ChangeCo

2009-08-14 17:45:52

C# ArrayLis

2009-08-07 17:25:37

C# SortedLi

2009-09-04 16:37:37

C# DES算法

2009-08-04 09:30:33

C#调用ImageAn

2009-08-20 10:10:55

C#透明窗体

2009-08-10 14:43:03

C#函数Convert

2009-08-12 17:03:39

C# Static修饰

2009-08-11 14:45:41

C# DataGrid

2009-08-21 17:24:06

C# SingleIn

2009-07-31 16:00:30

C#函数重载

2009-09-11 09:15:06

C# get方法

2009-08-21 15:57:58

C# DataSour

2009-08-06 14:43:10

C# Calculat

2009-08-18 10:30:30

C#枚举

2009-08-13 17:52:27

C#数据采集

2009-08-10 17:36:17

C#扩展方法
点赞
收藏

51CTO技术栈公众号