DotNet 笔记

东方欲晓,莫道君起早。

C#常用加解密整理大全

/*
 *  MD5 加密(不可逆加密)
 *  SHA1 加密(不可逆加密)
 *  DES加密字符串
 *  DES解密字符串
 *  编码为BASE64字串
 *  解码BASE64字串
 */
using System.Web.Security;
using System.Security.Cryptography;
using System.Text;
using System.IO;
using System;
public class EncryptHelper
{
    // 提供8个字符作为DES密钥(程序自动截取前8个字符)
    private static string key = "s89a7klgh6v5x5wedasdfgvb";

    /// <summary>
    /// DES对称加密解密的密钥
    /// </summary>
    public static string Key
    {
        get
        {
            return key;
        }
        set
        {
            key = value;
        }
    }

    /// <summary>
    /// MD5 加密(不可逆加密)
    /// </summary>
    /// <param name="pass">要加密的原始字串</param>
    /// <returns></returns>
    public static string MD5Encrypt(string pass)
    {
        System.Security.Cryptography.MD5 md5 = new System.Security.Cryptography.MD5CryptoServiceProvider();
        byte[] bytResult = md5.ComputeHash(System.Text.Encoding.UTF8.GetBytes(pass));
        md5.Clear();
        string strResult = BitConverter.ToString(bytResult);
        strResult = strResult.Replace("-", "");
        return strResult;
        /* 另一种方法
        pass = FormsAuthentication.HashPasswordForStoringInConfigFile(pass, "MD5");
        return pass;
        */
    }

    /// <summary>
    /// SHA1 加密(不可逆加密)
    /// </summary>
    /// <param name="pass">要加密的原始字串</param>
    /// <returns></returns>
    public static string SHA1Encrypt(string pass)
    {
        System.Security.Cryptography.SHA1 sha1 = new System.Security.Cryptography.SHA1CryptoServiceProvider();
        byte[] bytResult = sha1.ComputeHash(System.Text.Encoding.UTF8.GetBytes(pass));
        sha1.Clear();
        string strResult = BitConverter.ToString(bytResult);
        strResult = strResult.Replace("-", "");
        return strResult;
        /* 另一种方法
        pass = FormsAuthentication.HashPasswordForStoringInConfigFile(pass, "SHA1");
        return pass;
        */
    }

    /// <summary>
    /// DES加密字符串
    /// </summary>
    /// <param name="encryptString">待加密的字符串</param>
    /// <returns>加密成功返回加密后的字符串,失败返回源串</returns>
    public static string DESEncrypt(string encryptString)
    {
        try
        {
            byte[] rgbKey = Encoding.UTF8.GetBytes(key.Substring(0, 8));
            byte[] rgbIV = rgbKey;
            byte[] inputByteArray = Encoding.UTF8.GetBytes(encryptString);
            DESCryptoServiceProvider dCSP = new DESCryptoServiceProvider();
            MemoryStream mStream = new MemoryStream();
            CryptoStream cStream = new CryptoStream(mStream, dCSP.CreateEncryptor(rgbKey, rgbIV), CryptoStreamMode.Write);
            cStream.Write(inputByteArray, 0, inputByteArray.Length);
            cStream.FlushFinalBlock();
            cStream.Close();
            return Convert.ToBase64String(mStream.ToArray());
        }
        catch
        {
            return encryptString;
        }
    }

    /// <summary>
    /// DES解密字符串
    /// </summary>
    /// <param name="decryptString">待解密的字符串</param>
    /// <returns>解密成功返回解密后的字符串,失败返源串</returns>
    public static string DESDecrypt(string decryptString)
    {
        try
        {
            byte[] rgbKey = Encoding.UTF8.GetBytes(key.Substring(0, 8));
            byte[] rgbIV = rgbKey;
            byte[] inputByteArray = Convert.FromBase64String(decryptString);
            DESCryptoServiceProvider DCSP = new DESCryptoServiceProvider();
            MemoryStream mStream = new MemoryStream();
            CryptoStream cStream = new CryptoStream(mStream, DCSP.CreateDecryptor(rgbKey, rgbIV), CryptoStreamMode.Write);
            cStream.Write(inputByteArray, 0, inputByteArray.Length);
            cStream.FlushFinalBlock();
            cStream.Close();
            return Encoding.UTF8.GetString(mStream.ToArray());
        }
        catch
        {
            return decryptString;
        }
    }

    /// <summary>
    /// 将普通字符串编码为BASE64字串
    /// </summary>
    /// <param name="str">源字符串</param>
    /// <returns></returns>
    public static string Base64Encode(string str)
    {
        return Convert.ToBase64String(Encoding.UTF8.GetBytes(str));
    }

    /// <summary>
    /// 解码BASE64字串
    /// </summary>
    /// <param name="str">Base64字串</param>
    /// <returns></returns>
    public static string Base64Decode(string base64Str)
    {
        return Encoding.UTF8.GetString(Convert.FromBase64String(base64Str));
    }
}

 

Loading