String encryption and decryption common classes: Reprint to:
Http://www.cnblogs.com/malaohu/p/3214136.html
publicsealed classEncryptUtils
{
#region Base64加密解密
/// <summary>
/// Base64加密
/// </summary>
/// <param name="input">需要加密的字符串</param>
/// <returns></returns>
publicstatic string Base64Encrypt(stringinput)
{
returnBase64Encrypt(input, newUTF8Encoding());
}
/// <summary>
/// Base64加密
/// </summary>
/// <param name="input">需要加密的字符串</param>
/// <param name="encode">字符编码</param>
/// <returns></returns>
publicstatic string Base64Encrypt(stringinput, Encoding encode)
{
returnConvert.ToBase64String(encode.GetBytes(input));
}
/// <summary>
/// Base64解密
/// </summary>
/// <param name="input">需要解密的字符串</param>
/// <returns></returns>
publicstatic string Base64Decrypt(stringinput)
{
returnBase64Decrypt(input, newUTF8Encoding());
}
/// <summary>
/// Base64解密
/// </summary>
/// <param name="input">需要解密的字符串</param>
/// <param name="encode">字符的编码</param>
/// <returns></returns>
publicstatic string Base64Decrypt(stringinput, Encoding encode)
{
returnencode.GetString(Convert.FromBase64String(input));
}
#endregion
#region DES加密解密
/// <summary>
/// DES加密
/// </summary>
/// <param name="data">加密数据</param>
/// <param name="key">8位字符的密钥字符串</param>
/// <param name="iv">8位字符的初始化向量字符串</param>
/// <returns></returns>
publicstatic string DESEncrypt(string data, string key, stringiv)
{
byte[] byKey = System.Text.ASCIIEncoding.ASCII.GetBytes(key);
byte[] byIV = System.Text.ASCIIEncoding.ASCII.GetBytes(iv);
DESCryptoServiceProvider cryptoProvider = newDESCryptoServiceProvider();
inti = cryptoProvider.KeySize;
MemoryStream ms = newMemoryStream();
CryptoStream cst = newCryptoStream(ms, cryptoProvider.CreateEncryptor(byKey, byIV), CryptoStreamMode.Write);
StreamWriter sw = newStreamWriter(cst);
sw.Write(data);
sw.Flush();
cst.FlushFinalBlock();
sw.Flush();
returnConvert.ToBase64String(ms.GetBuffer(), 0, (int)ms.Length);
}
/// <summary>
/// DES解密
/// </summary>
/// <param name="data">解密数据</param>
/// <param name="key">8位字符的密钥字符串(需要和加密时相同)</param>
/// <param name="iv">8位字符的初始化向量字符串(需要和加密时相同)</param>
/// <returns></returns>
publicstatic string DESDecrypt(string data, string key, stringiv)
{
byte[] byKey = System.Text.ASCIIEncoding.ASCII.GetBytes(key);
byte[] byIV = System.Text.ASCIIEncoding.ASCII.GetBytes(iv);
byte[] byEnc;
try
{
byEnc = Convert.FromBase64String(data);
}
catch
{
returnnull;
}
DESCryptoServiceProvider cryptoProvider = newDESCryptoServiceProvider();
MemoryStream ms = newMemoryStream(byEnc);
CryptoStream cst = newCryptoStream(ms, cryptoProvider.CreateDecryptor(byKey, byIV), CryptoStreamMode.Read);
StreamReader sr = newStreamReader(cst);
returnsr.ReadToEnd();
}
#endregion
#region MD5加密
/// <summary>
/// MD5加密
/// </summary>
/// <param name="input">需要加密的字符串</param>
/// <returns></returns>
publicstatic string MD5Encrypt(stringinput)
{
returnMD5Encrypt(input, newUTF8Encoding());
}
/// <summary>
/// MD5加密
/// </summary>
/// <param name="input">需要加密的字符串</param>
/// <param name="encode">字符的编码</param>
/// <returns></returns>
publicstatic string MD5Encrypt(stringinput, Encoding encode)
{
MD5 md5 = newMD5CryptoServiceProvider();
byte[] t = md5.ComputeHash(encode.GetBytes(input));
StringBuilder sb = newStringBuilder(32);
for(inti = 0; i < t.Length; i++)
sb.Append(t[i].ToString("x").PadLeft(2, ‘0‘));
returnsb.ToString();
}
/// <summary>
/// MD5对文件流加密
/// </summary>
/// <param name="sr"></param>
/// <returns></returns>
publicstatic stringMD5Encrypt(Stream stream)
{
MD5 md5serv = MD5CryptoServiceProvider.Create();
byte[] buffer = md5serv.ComputeHash(stream);
StringBuilder sb = newStringBuilder();
foreach(byte var inbuffer)
sb.Append(var.ToString("x2"));
returnsb.ToString();
}
/// <summary>
/// MD5加密(返回16位加密串)
/// </summary>
/// <param name="input"></param>
/// <param name="encode"></param>
/// <returns></returns>
publicstatic string MD5Encrypt16(stringinput, Encoding encode)
{
MD5CryptoServiceProvider md5 = newMD5CryptoServiceProvider();
stringresult = BitConverter.ToString(md5.ComputeHash(encode.GetBytes(input)), 4, 8);
result = result.Replace("-", "");
returnresult;
}
#endregion
#region 3DES 加密解密
publicstatic string DES3Encrypt(string data, stringkey)
{
TripleDESCryptoServiceProvider DES = newTripleDESCryptoServiceProvider();
DES.Key = ASCIIEncoding.ASCII.GetBytes(key);
DES.Mode = CipherMode.CBC;
DES.Padding = PaddingMode.PKCS7;
ICryptoTransform DESEncrypt = DES.CreateEncryptor();
byte[] Buffer = ASCIIEncoding.ASCII.GetBytes(data);
returnConvert.ToBase64String(DESEncrypt.TransformFinalBlock(Buffer, 0, Buffer.Length));
}
publicstatic string DES3Decrypt(string data, stringkey)
{
TripleDESCryptoServiceProvider DES = newTripleDESCryptoServiceProvider();
DES.Key = ASCIIEncoding.ASCII.GetBytes(key);
DES.Mode = CipherMode.CBC;
DES.Padding = System.Security.Cryptography.PaddingMode.PKCS7;
ICryptoTransform DESDecrypt = DES.CreateDecryptor();
stringresult = "";
try
{
byte[] Buffer = Convert.FromBase64String(data);
result = ASCIIEncoding.ASCII.GetString(DESDecrypt.TransformFinalBlock(Buffer, 0, Buffer.Length));
}
catch(Exception e)
{
}
returnresult;
}
#endregion
}
Common classes for string encryption and decryption