m_RC2Provider = new
RC2CryptoServiceProvider();
try
{
byte[] m_btDecryptString =
Convert.FromBase64String(DecryptString);
MemoryStream m_stream = new MemoryStream();
CryptoStream m_cstream = new CryptoStream(m_stream,
m_RC2Provider.CreateDecryptor(Encoding.Default.GetBytes(DecryptKey),
m_btIV), CryptoStreamMode.Write);
m_cstream.Write(m_btDecryptString, 0,
m_btDecryptString.Length);
m_cstream.FlushFinalBlock();
m_strDecrypt =
Encoding.Default.GetString(m_stream.ToArray());
m_stream.Close(); m_stream.Dispose();
m_cstream.Close(); m_cstream.Dispose();
}
catch (IOException ex) { throw ex; }
catch (CryptographicException ex) { throw ex; }
catch (ArgumentException ex) { throw ex; }
catch (Exception ex) { throw ex; }
finally { m_RC2Provider.Clear(); }
return m_strDecrypt;
}
///
/// 3DES 加密(基于DES,对一块数据用三个不同的密钥进行三次加密,强度更高)
///
/// 待加密密文
/// 密钥一
/// 密钥二
/// 密钥三
/// returns
public static string DES3Encrypt(string EncryptString, string
EncryptKey1, string EncryptKey2, string EncryptKey3)
{
string m_strEncrypt = "";
try
{
m_strEncrypt = DESEncrypt(EncryptString, EncryptKey3);
m_strEncrypt = DESEncrypt(m_strEncrypt, EncryptKey2);
m_strEncrypt = DESEncrypt(m_strEncrypt, EncryptKey1);
}
catch (Exception ex) { throw ex; }
return m_strEncrypt;
}
///
/// 3DES 解密(基于DES,对一块数据用三个不同的密钥进行三次加密,强度更高)
///
/// 待解密密文
/// 密钥一
/// 密钥二
/// 密钥三
/// returns
public static string DES3Decrypt(string DecryptString, string
DecryptKey1, string DecryptKey2, string DecryptKey3)
{
string m_strDecrypt = "";
try
{
m_strDecrypt = DESDecrypt(DecryptString, DecryptKey1);
m_strDecrypt = DESDecrypt(m_strDecrypt, DecryptKey2);
m_strDecrypt = DESDecrypt(m_strDecrypt, DecryptKey3);
}
catch (Exception ex) { throw ex; }
return m_strDecrypt;
}
///
/// AES 加密(高级加密标准,是下一代的加密算法标准,速度快,安全级别高,目前 AES 标准的一个实现是 Rijndael
算法)
///
/// 待加密密文
/// 加密密钥
///
public static string AESEncrypt(string EncryptString, string
EncryptKey)
{
if (string.IsNullOrEmpty(EncryptString)) { throw (new
Exception("密文不得为空")); }
if (string.IsNullOrEmpty(EncryptKey)) { throw (new
Exception("密钥不得为空")); }
string m_strEncrypt = "";
byte[] m_btIV =
Convert.FromBase64String("Rkb4jvUy/ye7Cd7k89QQgQ==");
Rijndael m_AESProvider = Rijndael.Create();
try
{
byte[] m_btEncryptString =
Encoding.Default.GetBytes(EncryptString);
MemoryStream m_stream = new MemoryStream();
CryptoStream m_csstream = new CryptoStream(m_stream,
m_AESProvider.CreateEncryptor(Encoding.Default.GetBytes(EncryptKey),
m_btIV), CryptoStreamMode.Write);
m_csstream.Write(m_btEncryptString, 0, m_btEncryptString.Length);
m_csstream.FlushFinalBlock();
m_strEncrypt = Convert.ToBase64String(m_stream.ToArray());
m_stream.Close(); m_stream.Dispose();
m_csstream.Close(); m_csstream.Dispose();
}
catch (IOException ex) { throw ex; }
catch (CryptographicException ex) { throw ex; }
catch (ArgumentException ex) { throw ex; }
catch (Exception ex) { throw ex; }
finally { m_AESProvider.Clear(); }
return m_strEncrypt;
}
///
/// AES 解密(高级加密标准,是下一代的加密算法标准,速度快,安全级别高,目前 AES 标准的一个实现是 Rijndael
算法)
///
/// 待解密密文
/// 解密密钥
///
public static string AESDecrypt(string DecryptString, string
DecryptKey)
{
if (string.IsNullOrEmpty(DecryptString)) { throw (new
Exception("密文不得为空")); }
if (string.IsNullOrEmpty(DecryptKey)) { throw (new
Exception("密钥不得为空")); }
string m_strDecrypt = "";
byte[] m_btIV =
Convert.FromBase64String("Rkb4jvUy/ye7Cd7k89QQgQ==");
Rijndael m_AESProvider = Rijndael.Create();
try
{
byte[] m_btDecryptString =
Convert.FromBase64String(DecryptString);
MemoryStream m_stream = new MemoryStream();
CryptoStream m_csstream = new CryptoStream(m_stream,
m_AESProvider.CreateDecryptor(Encoding.Default.GetBytes(DecryptKey),
m_btIV), CryptoStreamMode.Write);
m_csstream.Write(m_btDecryptString, 0, m_btDecryptString.Length);
m_csstream.FlushFinalBlock();
m_strDecrypt =
Encoding.Default.GetString(m_stream.ToArray());
m_stream.Close(); m_stream.Dispose();
m_csstream.Close(); m_csstream.Dispose();
}
catch (IOException ex) { throw ex; }
catch (CryptographicException ex) { throw ex; }
catch (ArgumentException ex) { throw ex; }
catch (Exception ex) { throw ex; }
finally { m_AESProvider.Clear(); }
return m_strDecrypt;
}