一个可逆的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
}
}