zoukankan      html  css  js  c++  java
  • 字符串加密和解密的常类

    字符串加密和解密常用类:转载至:

    http://www.cnblogs.com/malaohu/p/3214136.html

    public sealed class EncryptUtils

    {

    #region Base64加密解密

    /// <summary>

    /// Base64加密

    /// </summary>

    /// <param name="input">需要加密的字符串</param>

    /// <returns></returns>

    public static string Base64Encrypt(string input)

    {

    return Base64Encrypt(input, new UTF8Encoding());

    }

    /// <summary>

    /// Base64加密

    /// </summary>

    /// <param name="input">需要加密的字符串</param>

    /// <param name="encode">字符编码</param>

    /// <returns></returns>

    public static string Base64Encrypt(string input, Encoding encode)

    {

    return Convert.ToBase64String(encode.GetBytes(input));

    }

    /// <summary>

    /// Base64解密

    /// </summary>

    /// <param name="input">需要解密的字符串</param>

    /// <returns></returns>

    public static string Base64Decrypt(string input)

    {

    return Base64Decrypt(input, new UTF8Encoding());

    }

    /// <summary>

    /// Base64解密

    /// </summary>

    /// <param name="input">需要解密的字符串</param>

    /// <param name="encode">字符的编码</param>

    /// <returns></returns>

    public static string Base64Decrypt(string input, Encoding encode)

    {

    return encode.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>

    public static string DESEncrypt(string data, string key, string iv)

    {

    byte[] byKey = System.Text.ASCIIEncoding.ASCII.GetBytes(key);

    byte[] byIV = System.Text.ASCIIEncoding.ASCII.GetBytes(iv);

    DESCryptoServiceProvider cryptoProvider = new DESCryptoServiceProvider();

    int i = cryptoProvider.KeySize;

    MemoryStream ms = new MemoryStream();

    CryptoStream cst = new CryptoStream(ms, cryptoProvider.CreateEncryptor(byKey, byIV), CryptoStreamMode.Write);

    StreamWriter sw = new StreamWriter(cst);

    sw.Write(data);

    sw.Flush();

    cst.FlushFinalBlock();

    sw.Flush();

    return Convert.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>

    public static string DESDecrypt(string data, string key, string iv)

    {

    byte[] byKey = System.Text.ASCIIEncoding.ASCII.GetBytes(key);

    byte[] byIV = System.Text.ASCIIEncoding.ASCII.GetBytes(iv);

    byte[] byEnc;

    try

    {

    byEnc = Convert.FromBase64String(data);

    }

    catch

    {

    return null;

    }

    DESCryptoServiceProvider cryptoProvider = new DESCryptoServiceProvider();

    MemoryStream ms = new MemoryStream(byEnc);

    CryptoStream cst = new CryptoStream(ms, cryptoProvider.CreateDecryptor(byKey, byIV), CryptoStreamMode.Read);

    StreamReader sr = new StreamReader(cst);

    return sr.ReadToEnd();

    }

    #endregion

    #region MD5加密

    /// <summary>

    /// MD5加密

    /// </summary>

    /// <param name="input">需要加密的字符串</param>

    /// <returns></returns>

    public static string MD5Encrypt(string input)

    {

    return MD5Encrypt(input, new UTF8Encoding());

    }

    /// <summary>

    /// MD5加密

    /// </summary>

    /// <param name="input">需要加密的字符串</param>

    /// <param name="encode">字符的编码</param>

    /// <returns></returns>

    public static string MD5Encrypt(string input, Encoding encode)

    {

    MD5 md5 = new MD5CryptoServiceProvider();

    byte[] t = md5.ComputeHash(encode.GetBytes(input));

    StringBuilder sb = new StringBuilder(32);

    for (int i = 0; i < t.Length; i++)

    sb.Append(t[i].ToString("x").PadLeft(2, '0'));

    return sb.ToString();

    }

    /// <summary>

    /// MD5对文件流加密

    /// </summary>

    /// <param name="sr"></param>

    /// <returns></returns>

    public static string MD5Encrypt(Stream stream)

    {

    MD5 md5serv = MD5CryptoServiceProvider.Create();

    byte[] buffer = md5serv.ComputeHash(stream);

    StringBuilder sb = new StringBuilder();

    foreach (byte var in buffer)

    sb.Append(var.ToString("x2"));

    return sb.ToString();

    }

    /// <summary>

    /// MD5加密(返回16位加密串)

    /// </summary>

    /// <param name="input"></param>

    /// <param name="encode"></param>

    /// <returns></returns>

    public static string MD5Encrypt16(string input, Encoding encode)

    {

    MD5CryptoServiceProvider md5 = new MD5CryptoServiceProvider();

    string result = BitConverter.ToString(md5.ComputeHash(encode.GetBytes(input)), 4, 8);

    result = result.Replace("-", "");

    return result;

    }

    #endregion

    #region 3DES 加密解密

    public static string DES3Encrypt(string data, string key)

    {

    TripleDESCryptoServiceProvider DES = new TripleDESCryptoServiceProvider();

    DES.Key = ASCIIEncoding.ASCII.GetBytes(key);

    DES.Mode = CipherMode.CBC;

    DES.Padding = PaddingMode.PKCS7;

    ICryptoTransform DESEncrypt = DES.CreateEncryptor();

    byte[] Buffer = ASCIIEncoding.ASCII.GetBytes(data);

    return Convert.ToBase64String(DESEncrypt.TransformFinalBlock(Buffer, 0, Buffer.Length));

    }

    public static string DES3Decrypt(string data, string key)

    {

    TripleDESCryptoServiceProvider DES = new TripleDESCryptoServiceProvider();

    DES.Key = ASCIIEncoding.ASCII.GetBytes(key);

    DES.Mode = CipherMode.CBC;

    DES.Padding = System.Security.Cryptography.PaddingMode.PKCS7;

    ICryptoTransform DESDecrypt = DES.CreateDecryptor();

    string result = "";

    try

    {

    byte[] Buffer = Convert.FromBase64String(data);

    result = ASCIIEncoding.ASCII.GetString(DESDecrypt.TransformFinalBlock(Buffer, 0, Buffer.Length));

    }

    catch (Exception e)

    {

    }

    return result;

    }

    #endregion

    }

  • 相关阅读:
    C# 线程间互相通信
    COM组件的使用方法
    C++基于ATL工程编写ActiveX控件步骤
    VC++编写ActiveX控件
    C#协作试取消线程
    Asp.net的内置对象!!!
    C#的三大特性
    类的静态方法。。。。。
    页面的生命周期
    .net面试题 2016
  • 原文地址:https://www.cnblogs.com/caianhua/p/4469693.html
Copyright © 2011-2022 走看看