日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

字符串加密與解密

 悟靜 2012-02-16

字符串加密與解密

設(shè)計(jì)應(yīng)用程序時(shí),為了防止一些敏感信息的泄露,通常需要對(duì)這些信息進(jìn)行加密。以用戶的登錄密碼為例,如果密碼以明文的形式存儲(chǔ)在數(shù)據(jù)表中,很容易就會(huì)被人發(fā)現(xiàn);相反,如果密碼以密文的形式儲(chǔ)存,即使別人從數(shù)據(jù)表中發(fā)現(xiàn)了密碼,也是加密之后的密碼,根本不能使用。通過(guò)對(duì)密碼進(jìn)行加密,能夠極大地提高系統(tǒng)的保密性。下面通過(guò)一個(gè)實(shí)例講解如何對(duì)字符串進(jìn)行加密與解密。

例6.21  創(chuàng)建一個(gè)控制臺(tái)應(yīng)用程序,命名為EDString。在該程序中定義一個(gè)靜態(tài)的字符串變量,用來(lái)記錄加密密鑰。代碼如下:(實(shí)例位置:光盤\TM\第6章\例6.21)

  1. static string encryptKey = "Oyea";    
    //定義密鑰 

自定義一個(gè)返回值類型為string類型的Encrypt方法,用來(lái)對(duì)字符串進(jìn)行加密。該方法中有一個(gè)string類型的參數(shù),用來(lái)表示要加密的字符串。Encrypt方法實(shí)現(xiàn)代碼如下:

  1. #region 加密字符串  
  2. /// <summary> 
  3. /// 加密字符串  
  4. /// </summary> 
  5. /// <param name="str">要加密的字符串</param> 
  6. /// <returns>加密后的字符串</returns> 
  7. static string Encrypt(string str)  
  8. {  
  9.     DESCryptoServiceProvider descsp = new 
    DESCryptoServiceProvider();   //實(shí)例化加/解密類對(duì)象  
  10.     byte[] key = Encoding.Unicode.GetBytes(encryptKey); 
    //定義字節(jié)數(shù)組,用來(lái)存儲(chǔ)密鑰  
  11.     byte[] data = Encoding.Unicode.GetBytes(str);
    //定義字節(jié)數(shù)組,用來(lái)存儲(chǔ)要加密的字符串  
  12.     MemoryStream MStream = new MemoryStream(); 
    //實(shí)例化內(nèi)存流對(duì)象  
  13.     //使用內(nèi)存流實(shí)例化加密流對(duì)象   
  14.     CryptoStream CStream = new CryptoStream
    (MStream, descsp.CreateEncryptor(key, key), 
    CryptoStreamMode.Write);  
  15.     CStream.Write(data, 0, data.Length);  
    //向加密流中寫入數(shù)據(jù)  
  16.     CStream.FlushFinalBlock();              
    //釋放加密流  
  17.     return Convert.ToBase64String(MStream.ToArray());
    //返回加密后的字符串  
  18. }  
  19. #endregion 

說(shuō)明:由于加密、解密字符串時(shí),需要用到加密類和內(nèi)存流,所以首先需要在命名空間區(qū)域添加System.Security.Cryptography和System.IO命名空間。

自定義一個(gè)返回值類型為string類型的Decrypt方法,用來(lái)對(duì)加密后的字符串進(jìn)行解密。該方法中有一個(gè)string類型的參數(shù),用來(lái)表示要解密的字符串。Decrypt方法實(shí)現(xiàn)代碼如下:

  1. #region 解密字符串  
  2. /// <summary> 
  3. /// 解密字符串  
  4. /// </summary> 
  5. /// <param name="str">要解密的字符串</param> 
  6. /// <returns>解密后的字符串</returns> 
  7. static string Decrypt(string str)  
  8. {  
  9.     DESCryptoServiceProvider descsp = new
     DESCryptoServiceProvider();   //實(shí)例化加/解密類對(duì)象  
  10.     byte[] key = Encoding.Unicode.GetBytes(encryptKey); 
    //定義字節(jié)數(shù)組,用來(lái)存儲(chǔ)密鑰  
  11.     byte[] data = Convert.FromBase64String(str);
    //定義字節(jié)數(shù)組,用來(lái)存儲(chǔ)要解密的字符串  
  12.     MemoryStream MStream = new MemoryStream(); 
    //實(shí)例化內(nèi)存流對(duì)象  
  13.     //使用內(nèi)存流實(shí)例化解密流對(duì)象  
  14.     CryptoStream CStream = new CryptoStream(MStream, 
    descsp.CreateDecryptor(key, key), CryptoStreamMode.Write);  
  15.     CStream.Write(data, 0, data.Length);      
    //向解密流中寫入數(shù)據(jù)  
  16.     CStream.FlushFinalBlock();               
    //釋放解密流  
  17.     return Encoding.Unicode.GetString
    (MStream.ToArray());       //返回解密后的字符串  
  18. }  
  19. #endregion 

在Main方法中,首先提示輸入信息;然后定義一個(gè)string類型的變量,用來(lái)記錄輸入的字符串;之后調(diào)用自定義方法Encrypt加密輸入的字符串,并使用一個(gè)string類型的變量記錄該字符串;接著調(diào)用自定義方法Decrypt對(duì)該字符串進(jìn)行解密;最后分別輸出加密和解密后的字符串。Main方法實(shí)現(xiàn)代碼如下:

  1. static void Main(string[] args)  
  2. {  
  3.     Console.Write("請(qǐng)輸入要加密的字符串:");   
    //提示輸入字符串  
  4.     Console.WriteLine();                  
    //換行輸入  
  5.     string strOld = Console.ReadLine();     
    //記錄輸入的字符串  
  6.     string strNew = Encrypt(strOld);              
    //加密字符串  
  7.     Console.WriteLine("加密后的字符串:" + strNew);  
    //輸出加密后的字符串  
  8.     Console.WriteLine("解密后的字符串:" + Decrypt(strNew)); 
    //解密字符串并輸出  
  9.     Console.ReadLine();  

程序運(yùn)行結(jié)果如圖6.5所示。

 
圖6.5  字符串加密與解密

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多