日期:2012-01-10  浏览次数:20538 次

可以用来加/解密数据库用户、密码等

using System;
using System.IO;
using System.Text;
using System.Security.Cryptography;

namespace Common
{
/// <summary>
/// SecurityService 的摘要说明。
/// </summary>
public class SecurityService
{
static protected Byte[] byteKey = {125, 14, 45, 67, 112, 79, 77, 99, 37, 104, 13, 9, 118, 51, 87, 108};
static protected Byte[] byteIV = {86, 19, 79, 15, 72, 58, 117, 45};
static public string SymmetricEncrypt(String sPlainText)
{
Byte[] bytePlaintext;
MemoryStream EncryptedStream;
ICryptoTransform Encryptor;
CryptoStream TheCryptoStream;
if(sPlainText=="") return "";
bytePlaintext = Encoding.ASCII.GetBytes(sPlainText);
EncryptedStream = new MemoryStream(sPlainText.Length);
Encryptor = GetEncryptor();
TheCryptoStream = new CryptoStream(EncryptedStream, Encryptor, CryptoStreamMode.Write);
TheCryptoStream.Write(bytePlaintext, 0, bytePlaintext.Length);
TheCryptoStream.FlushFinalBlock();
TheCryptoStream.Close();

return Convert.ToBase64String(EncryptedStream.ToArray());

}//End Function

static public string SymmetricDecrypt(String sEncryptedText)
{
Byte[] byteEncrypted;
MemoryStream PlaintextStream;
ICryptoTransform Decryptor;
CryptoStream TheCryptoStream;

if (sEncryptedText == "") return "";

byteEncrypted = Convert.FromBase64String(sEncryptedText.Trim());
PlaintextStream = new MemoryStream(sEncryptedText.Length);
Decryptor = GetDecryptor();
TheCryptoStream = new CryptoStream(PlaintextStream, Decryptor, CryptoStreamMode.Write);

TheCryptoStream.Write(byteEncrypted, 0, byteEncrypted.Length);
TheCryptoStream.FlushFinalBlock();
TheCryptoStream.Close();

return Encoding.ASCII.GetString(PlaintextStream.ToArray());

}//End Function

static private ICryptoTransform GetEncryptor()
{
RC2CryptoServiceProvider CryptoProvider = new RC2CryptoServiceProvider();
CryptoProvider.Mode = CipherMode.CBC;
return CryptoProvider.CreateEncryptor(byteKey, byteIV);

}//End Function

static private ICryptoTransform GetDecryptor()
{
RC2CryptoServiceProvider CryptoProvider = new RC2CryptoServiceProvider();
CryptoProvider.Mode = CipherMode.CBC;
return CryptoProvider.CreateDecryptor(byteKey, byteIV);

}//End Function
}
}