.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;
- }
C# DES的應用及入門的基本內容就向你介紹到這里,希望對你了解和學習C# DES有所幫助。
【編輯推薦】