一个可逆的DES和TripleDES方式加密类(downmoon原创)

using System;
using System.Security;
using System.Security.Cryptography;
using System.IO;
using System.Text;
namespace EncryptDownmoon
{
 
/// <summary>
 
/// EncryptSqlConn 的摘要说明。
 
/// </summary>

 public class EncryptSqlConn
 
{
  
public EncryptSqlConn()
  
{
   
if(mCSP ==null)
   
{
    mCSP 
= SetEnc(); 
   }

  }

  
/// <summary>
  
/// 设置加密方式,0为DES,1为TripleDES
  
/// </summary>
  
/// <returns></returns>

  public EncryptSqlConn(int EnMethod)
  
{
   
if(EnMethod==0)
   
{
    lngEnMethod
=0;
   }

   
else
   
{
    lngEnMethod
=1;
   }

   
if(mCSP ==null)
   
{
    mCSP 
= SetEnc(); 
   }

   
  }

  
#region 方法

  
private SymmetricAlgorithm mCSP;
  
private int  m_lngEnMethod=0;
  
/// <summary>
  
/// 加密方式,0为DES,1为TripleDES
  
/// </summary>

  public int lngEnMethod
  
{
   
get
   
{
    
return m_lngEnMethod;
   }

   
set
   
{
    m_lngEnMethod
=value;
   }

  }

  
private SymmetricAlgorithm SetEnc()
  
{
   
if(lngEnMethod==0)
   
{
    
return new DESCryptoServiceProvider();
   }

   
else
    
return new TripleDESCryptoServiceProvider();
  }

  
//测试键值
  private  string genKeyValue
  
{
   
get
   
{                   
    mCSP.GenerateKey();
    
return Convert.ToBase64String(mCSP.Key);
   }

  }

        
//测试IV值
  private string genIVValue
  
{
   
get
   
{
    mCSP.GenerateIV();
    
return Convert.ToBase64String(mCSP.IV);
   }

  }

  
/// <summary>
  
/// 加密字串
  
/// </summary>
  
/// <param name="Value"></param>
  
/// <returns></returns>

  public string EncryptString(string Value)
  
{
   ICryptoTransform ct;
   MemoryStream ms;
   CryptoStream cs;
   
byte[] byt;
   ct 
= mCSP.CreateEncryptor(mCSP.Key, mCSP.IV);
   
//ct = mCSP.CreateEncryptor(genKeyValue,genIVValue);
   byt = Encoding.UTF8.GetBytes(Value);
   ms 
= new MemoryStream();
   cs 
= new CryptoStream(ms, ct, CryptoStreamMode.Write);
   cs.Write(byt, 
0, byt.Length);
   cs.FlushFinalBlock();
   cs.Close();
   
return Convert.ToBase64String(ms.ToArray());
  }


  
/// <summary>
  
/// 解密字串
  
/// </summary>
  
/// <param name="Value"></param>
  
/// <returns></returns>

  public string DecryptString(string Value)
  
{
   ICryptoTransform ct;
   MemoryStream ms;
   CryptoStream cs;
   
byte[] byt;
   ct 
= mCSP.CreateDecryptor(mCSP.Key, mCSP.IV);
   
//ct = mCSP.CreateDecryptor(genKeyValue, genIVValue);
   byt = Convert.FromBase64String(Value);
   ms 
= new MemoryStream();
   cs 
= new CryptoStream(ms, ct, CryptoStreamMode.Write);
   cs.Write(byt, 
0, byt.Length);
   cs.FlushFinalBlock();
   cs.Close();
   
return Encoding.UTF8.GetString(ms.ToArray());
  }

  
#endregion

 
 }

}
http://dev.csdn.net/author/downmoon/1190aaf1c53442e0a8bb133daafb440f.html
posted on 2007-03-10 14:13  mbskys  阅读(141)  评论(0)    收藏  举报