您好,登錄后才能下訂單哦!
今天就跟大家聊聊有關(guān)如何淺析.NET C# DES,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結(jié)了以下內(nèi)容,希望大家根據(jù)這篇文章可以有所收獲。
C# DES加密應(yīng)該是最基礎(chǔ)的加密算法,為了搞清楚它在.NET C#里面的用法,我費(fèi)了不少功夫,希望有心人能看到。C# DES一共就有4個參數(shù)參與運(yùn)作:明文、密文、密鑰、向量。為了初學(xué)者容易理解,可以把4個參數(shù)的關(guān)系寫成:密文=明文+密鑰+向量;明文=密文-密鑰-向量。為什么要向量這個參數(shù)呢?因?yàn)槿绻幸黄恼?,有幾個詞重復(fù),那么這個詞加上密鑰形成的密文,仍然會重復(fù),這給破解者有機(jī)可乘,破解者可以根據(jù)重復(fù)的內(nèi)容,猜出是什么詞,然而一旦猜對這個詞,那么,他就能算出密鑰,整篇文章就被破解了!加上向量這個參數(shù)以后,每塊文字段都會依次加上一段值,這樣,即使相同的文字,加密出來的密文,也是不一樣的,算法的安全性大大提高!
下面C# DES的應(yīng)用實(shí)例:
using System; //這個是使用DES的基礎(chǔ) using System.Security.Cryptography; //這個是處理文字編碼的前提 using System.Text; //以“流”的形式處理文字,也是微軟DES算法要求的 using System.IO; /// /// C# DES加密方法 /// /// 明文 /// 密鑰 /// 向量 /// 密文 public string DESEncrypt(string strPlain, string strDESKey,string strDESIV) { //把密鑰轉(zhuǎn)換成字節(jié)數(shù)組 byte[] bytesDESKey=ASCIIEncoding.ASCII.GetBytes(strDESKey); //把向量轉(zhuǎn)換成字節(jié)數(shù)組 byte[] bytesDESIV=ASCIIEncoding.ASCII.GetBytes(strDESIV); //聲明1個新的DES對象 DESCryptoServiceProvider desEncrypt=new DESCryptoServiceProvider(); //開辟一塊內(nèi)存流 MemoryStream msEncrypt=new MemoryStream(); //把內(nèi)存流對象包裝成加密流對象 CryptoStream csEncrypt=new CryptoStream( msEncrypt,desEncrypt.CreateEncryptor( bytesDESKey,bytesDESIV),CryptoStreamMode.Write); //把加密流對象包裝成寫入流對象 StreamWriter swEncrypt=new StreamWriter(csEncrypt); //寫入流對象寫入明文 swEncrypt.WriteLine(strPlain); //寫入流關(guān)閉 swEncrypt.Close(); //加密流關(guān)閉 csEncrypt.Close(); //把內(nèi)存流轉(zhuǎn)換成字節(jié)數(shù)組,內(nèi)存流現(xiàn)在已經(jīng)是密文了 byte[] bytesCipher=msEncrypt.ToArray(); //內(nèi)存流關(guān)閉 msEncrypt.Close(); //把密文字節(jié)數(shù)組轉(zhuǎn)換為字符串,并返回 return UnicodeEncoding.Unicode.GetString(bytesCipher); } /// /// C# DES解密方法 /// /// 密文 /// 密鑰 /// 向量 /// 明文 public string DESDecrypt(string strCipher, string strDESKey,string strDESIV) { //把密鑰轉(zhuǎn)換成字節(jié)數(shù)組 byte[] bytesDESKey=ASCIIEncoding.ASCII.GetBytes(strDESKey); //把向量轉(zhuǎn)換成字節(jié)數(shù)組 byte[] bytesDESIV=ASCIIEncoding.ASCII.GetBytes(strDESIV); //把密文轉(zhuǎn)換成字節(jié)數(shù)組 byte[] bytesCipher=UnicodeEncoding.Unicode.GetBytes(strCipher); //聲明1個新的DES對象 DESCryptoServiceProvider desDecrypt=new DESCryptoServiceProvider(); //開辟一塊內(nèi)存流,并存放密文字節(jié)數(shù)組 MemoryStream msDecrypt=new MemoryStream(bytesCipher); //把內(nèi)存流對象包裝成解密流對象 CryptoStream csDecrypt=new CryptoStream( msDecrypt,desDecrypt.CreateDecryptor( bytesDESKey,bytesDESIV),CryptoStreamMode.Read); //把解密流對象包裝成讀出流對象 StreamReader srDecrypt=new StreamReader(csDecrypt); //明文=讀出流的讀出內(nèi)容 string strPlainText=srDecrypt.ReadLine(); //讀出流關(guān)閉 srDecrypt.Close(); //解密流關(guān)閉 csDecrypt.Close(); //內(nèi)存流關(guān)閉 msDecrypt.Close(); //返回明文 return strPlainText; }
看完上述內(nèi)容,你們對如何淺析.NET C# DES有進(jìn)一步的了解嗎?如果還想了解更多知識或者相關(guān)內(nèi)容,請關(guān)注億速云行業(yè)資訊頻道,感謝大家的支持。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。