TripleDES加密、解密算法

  1. using System;   
  2.   
  3. using System.Collections.Generic;   
  4.   
  5. using System.Linq;   
  6.   
  7. using System.Text;   
  8.   
  9. using System.Security.Cryptography;   
  10.   
  11. using System.IO;   
  12.   
  13. namespace WindowsFormsApplication1   
  14.   
  15. {  
  16.     #region TripleDES算法   
  17.   
  18.   
  19.   
  20.     public class ClassTripleDES   
  21.   
  22.     {   
  23.   
  24.         public ClassTripleDES()   
  25.   
  26.         {   
  27.   
  28.         }   
  29.   
  30.   
  31.   
  32.         //加密,使用密碼產生加密算法的公鑰,並使用TripleDES對密碼進行加密。   
  33.   
  34.         public static string Encrypt(string pass)   
  35.   
  36.         {   
  37.   
  38.             try  
  39.   
  40.             {   
  41.   
  42.                 byte[] bt = (new System.Text.UnicodeEncoding()).GetBytes(pass);   
  43.   
  44.                 PasswordDeriveBytes pdb = new PasswordDeriveBytes(pass, null);   
  45.   
  46.                 byte[] key = pdb.GetBytes(24);   
  47.   
  48.                 byte[] iv = pdb.GetBytes(8);   
  49.   
  50.                 MemoryStream ms = new MemoryStream();   
  51.   
  52.                 TripleDESCryptoServiceProvider tdesc = new TripleDESCryptoServiceProvider();   
  53.   
  54.                 CryptoStream cs = new CryptoStream(ms, tdesc.CreateEncryptor(key, iv), CryptoStreamMode.Write);   
  55.   
  56.                 cs.Write(bt, 0, bt.Length);   
  57.   
  58.                 cs.FlushFinalBlock();   
  59.   
  60.                 return Convert.ToBase64String(ms.ToArray());   
  61.   
  62.             }   
  63.   
  64.             catch (Exception ex)   
  65.   
  66.             {   
  67.   
  68.                 throw ex;   
  69.   
  70.             }   
  71.   
  72.         }   
  73.   
  74.   
  75.   
  76.         //解密,使用密碼產生加密算法的公鑰,並使用TripleDES對加密數據進行解密。   
  77.   
  78.         public static string Decrypt(string str, string pass)   
  79.   
  80.         {   
  81.   
  82.             try  
  83.   
  84.             {   
  85.   
  86.                 byte[] bt = Convert.FromBase64String(str);   
  87.   
  88.                 PasswordDeriveBytes pdb = new PasswordDeriveBytes(pass, null);   
  89.   
  90.                 byte[] key = pdb.GetBytes(24);   
  91.   
  92.                 byte[] iv = pdb.GetBytes(8);   
  93.   
  94.                 MemoryStream ms = new MemoryStream();   
  95.   
  96.                 TripleDESCryptoServiceProvider tdesc = new TripleDESCryptoServiceProvider();   
  97.   
  98.                 CryptoStream cs = new CryptoStream(ms, tdesc.CreateDecryptor(key, iv), CryptoStreamMode.Write);   
  99.   
  100.                 cs.Write(bt, 0, bt.Length);   
  101.   
  102.                 cs.FlushFinalBlock();   
  103.   
  104.                 return (new System.Text.UnicodeEncoding()).GetString(ms.ToArray());   
  105.   
  106.             }   
  107.   
  108.             catch (Exception ex)   
  109.   
  110.             {   
  111.   
  112.                 throw ex;   
  113.   
  114.             }   
  115.   
  116.         }   
  117.   
  118.         //使用:   
  119.   
  120.         //string str = Encrypt("bbb");   
  121.   
  122.         //Console.WriteLine(Decrypt(str, "bbb"));   
  123.   
  124.   
  125.   
  126.         //加密,使用密碼產生加密算法的公鑰,並使用TripleDES對密碼進行加密。   
  127.   
  128.         public static string EncryptWithKey(string pass, string p_key)   
  129.   
  130.         {   
  131.   
  132.             try  
  133.   
  134.             {   
  135.   
  136.                 byte[] bt = (new System.Text.UnicodeEncoding()).GetBytes(pass);   
  137.   
  138.                 PasswordDeriveBytes pdb = new PasswordDeriveBytes(p_key, null);   
  139.   
  140.                 byte[] key = pdb.GetBytes(24);   
  141.   
  142.                 byte[] iv = pdb.GetBytes(8);   
  143.   
  144.                 MemoryStream ms = new MemoryStream();   
  145.   
  146.                 TripleDESCryptoServiceProvider tdesc = new TripleDESCryptoServiceProvider();   
  147.   
  148.                 CryptoStream cs = new CryptoStream(ms, tdesc.CreateEncryptor(key, iv), CryptoStreamMode.Write);   
  149.   
  150.                 cs.Write(bt, 0, bt.Length);   
  151.   
  152.                 cs.FlushFinalBlock();   
  153.   
  154.                 return Convert.ToBase64String(ms.ToArray());   
  155.   
  156.             }   
  157.   
  158.             catch (Exception ex)   
  159.   
  160.             {   
  161.   
  162.                 throw ex;   
  163.   
  164.             }   
  165.   
  166.         }   
  167.   
  168.   
  169.   
  170.         //解密,使用密碼產生加密算法的公鑰,並使用TripleDES對加密數據進行解密。   
  171.   
  172.         public static string DecryptWithKey(string str, string p_key)   
  173.   
  174.         {   
  175.   
  176.             try  
  177.   
  178.             {   
  179.   
  180.                 byte[] bt = Convert.FromBase64String(str);   
  181.   
  182.                 PasswordDeriveBytes pdb = new PasswordDeriveBytes(p_key, null);   
  183.   
  184.                 byte[] key = pdb.GetBytes(24);   
  185.   
  186.                 byte[] iv = pdb.GetBytes(8);   
  187.   
  188.                 MemoryStream ms = new MemoryStream();   
  189.   
  190.                 TripleDESCryptoServiceProvider tdesc = new TripleDESCryptoServiceProvider();   
  191.   
  192.                 CryptoStream cs = new CryptoStream(ms, tdesc.CreateDecryptor(key, iv), CryptoStreamMode.Write);   
  193.   
  194.                 cs.Write(bt, 0, bt.Length);   
  195.   
  196.                 cs.FlushFinalBlock();   
  197.   
  198.                 return (new System.Text.UnicodeEncoding()).GetString(ms.ToArray());   
  199.   
  200.             }   
  201.   
  202.             catch (Exception ex)   
  203.   
  204.             {   
  205.   
  206.                 throw ex;   
  207.   
  208.             }   
  209.   
  210.         }   
  211.   
  212.   
  213.   
  214.     }  
  215.     #endregion   
  216.   

轉自:記不清了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章