温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

如何浅析.NET C# DES

发布时间:2021-11-25 09:17:32 来源:亿速云 阅读:135 作者:柒染 栏目:编程语言

今天就跟大家聊聊有关如何浅析.NET C# DES,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。

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

下面C# DES的应用实例:

 using System;  //这个是使用DES的基础  using System.Security.Cryptography;  //这个是处理文字编码的前提  using System.Text;  //以“流”的形式处理文字,也是微软DES算法要求的  using System.IO;  ///  /// C# DES加密方法  ///  /// 明文 /// 密钥 /// 向量 /// 密文 public string DESEncrypt(string strPlain,  string strDESKey,string strDESIV)  {   //把密钥转换成字节数组   byte[] bytesDESKey=ASCIIEncoding.ASCII.GetBytes(strDESKey);   //把向量转换成字节数组   byte[] bytesDESIV=ASCIIEncoding.ASCII.GetBytes(strDESIV);   //声明1个新的DES对象   DESCryptoServiceProvider desEncrypt=new DESCryptoServiceProvider();   //开辟一块内存流   MemoryStream msEncrypt=new MemoryStream();   //把内存流对象包装成加密流对象   CryptoStream csEncrypt=new CryptoStream(  msEncrypt,desEncrypt.CreateEncryptor(  bytesDESKey,bytesDESIV),CryptoStreamMode.Write);   //把加密流对象包装成写入流对象   StreamWriter swEncrypt=new StreamWriter(csEncrypt);   //写入流对象写入明文   swEncrypt.WriteLine(strPlain);   //写入流关闭   swEncrypt.Close();   //加密流关闭   csEncrypt.Close();   //把内存流转换成字节数组,内存流现在已经是密文了   byte[] bytesCipher=msEncrypt.ToArray();   //内存流关闭   msEncrypt.Close();   //把密文字节数组转换为字符串,并返回   return UnicodeEncoding.Unicode.GetString(bytesCipher);  }  ///  /// C# DES解密方法  ///  /// 密文 /// 密钥 /// 向量 /// 明文 public string DESDecrypt(string strCipher,  string strDESKey,string strDESIV)  {   //把密钥转换成字节数组   byte[] bytesDESKey=ASCIIEncoding.ASCII.GetBytes(strDESKey);   //把向量转换成字节数组   byte[] bytesDESIV=ASCIIEncoding.ASCII.GetBytes(strDESIV);   //把密文转换成字节数组   byte[] bytesCipher=UnicodeEncoding.Unicode.GetBytes(strCipher);   //声明1个新的DES对象   DESCryptoServiceProvider desDecrypt=new DESCryptoServiceProvider();   //开辟一块内存流,并存放密文字节数组   MemoryStream msDecrypt=new MemoryStream(bytesCipher);   //把内存流对象包装成解密流对象   CryptoStream csDecrypt=new CryptoStream(  msDecrypt,desDecrypt.CreateDecryptor(  bytesDESKey,bytesDESIV),CryptoStreamMode.Read);   //把解密流对象包装成读出流对象   StreamReader srDecrypt=new StreamReader(csDecrypt);   //明文=读出流的读出内容   string strPlainText=srDecrypt.ReadLine();   //读出流关闭   srDecrypt.Close();   //解密流关闭   csDecrypt.Close();   //内存流关闭   msDecrypt.Close();   //返回明文   return strPlainText;  }

看完上述内容,你们对如何浅析.NET C# DES有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注亿速云行业资讯频道,感谢大家的支持。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI