asp.net TripleDES加密、解密算法

  using System;

  using System.Collections.Generic;

  using System.Linq;

  using System.Text;

  using System.Security.Cryptography;

  using System.IO;

  namespace WindowsFormsApplication1

  {

  #region TripleDES算法

  public class ClassTripleDES

  {

  public ClassTripleDES()

  {

  }

  //加密,使用密码产生加密算法的公钥,并使用TripleDES对密码进行加密。

  public static string Encrypt(string pass)

  {

  try

  {

  byte[] bt = (new System.Text.UnicodeEncoding()).GetBytes(pass);

  PasswordDeriveBytes pdb = new PasswordDeriveBytes(pass, null);

  byte[] key = pdb.GetBytes(24);

  byte[] iv = pdb.GetBytes(8);

  MemoryStream ms = new MemoryStream();

  TripleDESCryptoServiceProvider tdesc = new TripleDESCryptoServiceProvider();

  CryptoStream cs = new CryptoStream(ms, tdesc.CreateEncryptor(key, iv), CryptoStreamMode.Write);

  cs.Write(bt, 0, bt.Length);

  cs.FlushFinalBlock();

  return Convert.ToBase64String(ms.ToArray());

  }

  catch (Exception ex)

  {

  throw ex;

  }

  }

  //解密,使用密码产生加密算法的公钥,并使用TripleDES对加密数据进行解密。

  public static string Decrypt(string str, string pass)

  {

  try

  {

  byte[] bt = Convert.FromBase64String(str);

  PasswordDeriveBytes pdb = new PasswordDeriveBytes(pass, null);

  byte[] key = pdb.GetBytes(24);

  byte[] iv = pdb.GetBytes(8);

  MemoryStream ms = new MemoryStream();

  TripleDESCryptoServiceProvider tdesc = new TripleDESCryptoServiceProvider();

  CryptoStream cs = new CryptoStream(ms, tdesc.CreateDecryptor(key, iv), CryptoStreamMode.Write);

  cs.Write(bt, 0, bt.Length);

  cs.FlushFinalBlock();

  return (new System.Text.UnicodeEncoding()).GetString(ms.ToArray());

  }

  catch (Exception ex)

  {

  throw ex;

  }

  }

  //使用:

  //string str = Encrypt("bbb");

  //Console.WriteLine(Decrypt(str, "bbb"));

  //加密,使用密码产生加密算法的公钥,并使用TripleDES对密码进行加密。

  public static string EncryptWithKey(string pass, string p_key)

  {

  try

  {

  byte[] bt = (new System.Text.UnicodeEncoding()).GetBytes(pass);

  PasswordDeriveBytes pdb = new PasswordDeriveBytes(p_key, null);

  byte[] key = pdb.GetBytes(24);

  byte[] iv = pdb.GetBytes(8);

  MemoryStream ms = new MemoryStream();

  TripleDESCryptoServiceProvider tdesc = new TripleDESCryptoServiceProvider();

  CryptoStream cs = new CryptoStream(ms, tdesc.CreateEncryptor(key, iv), CryptoStreamMode.Write);

  cs.Write(bt, 0, bt.Length);

  cs.FlushFinalBlock();

  return Convert.ToBase64String(ms.ToArray());

  }

  catch (Exception ex)

  {

  throw ex;

  }

  }

  //解密,使用密码产生加密算法的公钥,并使用TripleDES对加密数据进行解密。

  public static string DecryptWithKey(string str, string p_key)

  {

  try

  {

  byte[] bt = Convert.FromBase64String(str);

  PasswordDeriveBytes pdb = new PasswordDeriveBytes(p_key, null);

  byte[] key = pdb.GetBytes(24);

  byte[] iv = pdb.GetBytes(8);

  MemoryStream ms = new MemoryStream();

  TripleDESCryptoServiceProvider tdesc = new TripleDESCryptoServiceProvider();

  CryptoStream cs = new CryptoStream(ms, tdesc.CreateDecryptor(key, iv), CryptoStreamMode.Write);

  cs.Write(bt, 0, bt.Length);

  cs.FlushFinalBlock();

  return (new System.Text.UnicodeEncoding()).GetString(ms.ToArray());

  }

  catch (Exception ex)

  {

  throw ex;

  }

  }

  }

  #endregion

  }