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;
- }
C# DES的应用及入门的基本内容就向你介绍到这里,希望对你了解和学习C# DES有所帮助。
【编辑推荐】