Home  >  Article  >  Backend Development  >  asp.net encryption and decryption class

asp.net encryption and decryption class

伊谢尔伦
伊谢尔伦Original
2016-11-25 09:40:301305browse

Here is a ready-made C# encryption and decryption class, provided by admin10000.com, including MD5, SHA1, DES encryption and decryption, and Base64 encoding and decoding.

First import the namespace

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

/// 631fb227578dfffda61e1fa4d04b7d25
/// EncryptHelper from www.Admin10000.com
/// 039f3e95db2a684c7b74365531eb6044

public class EncryptHelper
{
        // 提供8个字符作为DES密钥(程序自动截取前8个字符) 
        private static string key = "admin10000.com";
        /// <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));
        }
}


Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn