asp.net MD5、普通加密、对称加密

来源:互联网 发布:淘宝店铺全网举报 编辑:程序博客网 时间:2024/05/17 15:05

平时经常会遇到一些加密解密之类的处理,特编写成一个专门的类,以后只需要调用即可!

用法很简单,实例化类之后调用相关方法就行!会对应返回加密解密后的字符串!

下面是MD5、普通加密、对称加密,EDS


using System;using System.Collections.Generic;using System.Text;using System.Security.Cryptography;using System.IO;namespace Ecan{    public class EcanSecurity    {        /*MD5是message-digest algorithm 5(信息-摘要算法)的缩写,         * 被广泛用于加密和解密技术上,它可以说是文件的“数字指纹”。         * 任何一个文件,无论是可执行程序、图像文件、临时文件或者其他任何类型的文件,         * 也不管它体积多大,都有且只有一个独一无二的MD5信息值,并且如果这个文件被修改过,         * 它的MD5值也将随之改变。因此,我们可以通过对比同一文件的MD5值,         * 来校验这个文件是否被“篡改”过。*/        /// <summary>        /// MD5加密函数        /// </summary>        /// <param name="str">要加密的字符串</param>        /// <returns>加密后的字符串</returns>        ///         public string md5_Encode(string str)        {            MD5 m = new MD5CryptoServiceProvider();            byte[] data = Encoding.Default.GetBytes(str);            byte[] result = m.ComputeHash(data);            string ret1 = "";            try            {                for (int j = 0; j < result.Length; j++)                {                    ret1 += result[j].ToString("x").PadLeft(2, '0');                }                return ret1;            }            catch            {                return str;            }        }               /// <summary>        /// 简单加密函数        /// </summary>        /// <param name="str">要加密的字符串</param>        /// <returns>返回加密后的字符串</returns>        ///         public string simple_Encode(string str)        {            string s = "";            try            {                for (int i = 0; i < str.Length; i++)                {                    s += (char)(str[i] + 10 - 1 * 2);                }                return s;            }            catch            {                return str;            }        }                /// <summary>        /// 简单解密函数        /// </summary>        /// <param name="str">要解密的字符串</param>        /// <returns>返回解密后的字符串</returns>        ///         public string simple_Decode(string str)        {            string s = "";            try            {                for (int i = 0; i < str.Length; i++)                {                    s += (char)(str[i] - 10 + 1 * 2);                }                return s;            }            catch            {                return str;            }        }        //默认密钥向量        private static byte[] Keys = { 0x12, 0x34, 0x56, 0x78, 0x90, 0xAB, 0xCD, 0xEF };                /// <summary>        /// 对称加密法加密函数        /// </summary>        /// <param name="encryptString">待加密的字符串</param>        /// <param name="encryptKey">加密密钥,要求为8位</param>        /// <returns>加密成功返回加密后的字符串,失败返回源串</returns>        public string symmetry_Encode(string encryptString, string encryptKey)        {            try            {                byte[] rgbKey = Encoding.UTF8.GetBytes(encryptKey.Substring(0, 8));                byte[] rgbIV = Keys;                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();                return Convert.ToBase64String(mStream.ToArray());            }            catch            {                return encryptString;            }        }               /// <summary>        /// 对称加密法解密函数        /// </summary>        /// <param name="decryptString">待解密的字符串</param>        /// <param name="decryptKey">解密密钥,要求为8位,和加密密钥相同</param>        /// <returns>解密成功返回解密后的字符串,失败返源串</returns>        public string symmetry_Decode(string decryptString, string decryptKey)        {            try            {                byte[] rgbKey = Encoding.UTF8.GetBytes(decryptKey);                byte[] rgbIV = Keys;                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();                return Encoding.UTF8.GetString(mStream.ToArray());            }            catch            {                return decryptString;            }        }#region ========加密========          /// <summary>        /// 加密        /// </summary>        /// <param name="Text"></param>        /// <returns></returns>        public static string Encrypt(string Text)         {            return Encrypt(Text,"litianping");        }        /// <summary>         /// 加密数据         /// </summary>         /// <param name="Text"></param>         /// <param name="sKey"></param>         /// <returns></returns>         public static string Encrypt(string Text,string sKey)         {             DESCryptoServiceProvider des = new DESCryptoServiceProvider();             byte[] inputByteArray;             inputByteArray=Encoding.Default.GetBytes(Text);             des.Key = ASCIIEncoding.ASCII.GetBytes(System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(sKey, "md5").Substring(0, 8));             des.IV = ASCIIEncoding.ASCII.GetBytes(System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(sKey, "md5").Substring(0, 8));             System.IO.MemoryStream ms=new System.IO.MemoryStream();             CryptoStream cs=new CryptoStream(ms,des.CreateEncryptor(),CryptoStreamMode.Write);             cs.Write(inputByteArray,0,inputByteArray.Length);             cs.FlushFinalBlock();             StringBuilder ret=new StringBuilder();             foreach( byte b in ms.ToArray())             {                 ret.AppendFormat("{0:X2}",b);             }             return ret.ToString();         }         #endregion                #region ========解密========             /// <summary>        /// 解密        /// </summary>        /// <param name="Text"></param>        /// <returns></returns>        public static string Decrypt(string Text)         {            return Decrypt(Text, "litianping");        }        /// <summary>         /// 解密数据         /// </summary>         /// <param name="Text"></param>         /// <param name="sKey"></param>         /// <returns></returns>         public static string Decrypt(string Text,string sKey)         {             DESCryptoServiceProvider des = new DESCryptoServiceProvider();             int len;             len=Text.Length/2;             byte[] inputByteArray = new byte[len];             int x,i;             for(x=0;x<len;x++)             {                 i = Convert.ToInt32(Text.Substring(x * 2, 2), 16);                 inputByteArray[x]=(byte)i;             }             des.Key = ASCIIEncoding.ASCII.GetBytes(System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(sKey, "md5").Substring(0, 8));             des.IV = ASCIIEncoding.ASCII.GetBytes(System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(sKey, "md5").Substring(0, 8));             System.IO.MemoryStream ms=new System.IO.MemoryStream();             CryptoStream cs=new CryptoStream(ms,des.CreateDecryptor(),CryptoStreamMode.Write);             cs.Write(inputByteArray,0,inputByteArray.Length);             cs.FlushFinalBlock();             return Encoding.Default.GetString(ms.ToArray());         }          #endregion  }}



   


原创粉丝点击