Common classes for string encryption and decryption

Source: Internet
Author: User

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

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.