一个可逆的DES和TripleDES方式加密类

 

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
 
 }
}
posted on 2007-04-30 01:52  编程山人  阅读(365)  评论(0编辑  收藏  举报