一个可逆的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
SymmetricAlgorithmmCSP;
private
int
m_lngEnMethod
=
0
;

/**/
///
<summary>
///
加密方式,0为DES,1为TripleDES
///
</summary>
public
int
lngEnMethod

...
{
get

...
{
return
m_lngEnMethod;
}
set

...
{
m_lngEnMethod
=
value;
}
}
private
SymmetricAlgorithmSetEnc()

...
{
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>
///
<paramname="Value"></param>
///
<returns></returns>
public
string
EncryptString(
string
Value)

...
{
ICryptoTransformct;
MemoryStreamms;
CryptoStreamcs;
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>
///
<paramname="Value"></param>
///
<returns></returns>
public
string
DecryptString(
string
Value)

...
{
ICryptoTransformct;
MemoryStreamms;
CryptoStreamcs;
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

}
}