• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    ASP.NET加密解密算法分享
    #region DES加密解密
        /// summary>
        /// DES加密
        /// /summary>
        /// param name="strSource">待加密字串/param>
        /// param name="key">32位Key值/param>
        /// returns>加密后的字符串/returns>
        public string DESEncrypt(string strSource)
        {
          return DESEncrypt(strSource, DESKey);
        }
        public string DESEncrypt(string strSource, byte[] key)
        {
          SymmetricAlgorithm sa = Rijndael.Create();
          sa.Key = key;
          sa.Mode = CipherMode.ECB;
          sa.Padding = PaddingMode.Zeros;
          MemoryStream ms = new MemoryStream();
          CryptoStream cs = new CryptoStream(ms, sa.CreateEncryptor(), CryptoStreamMode.Write);
          byte[] byt = Encoding.Unicode.GetBytes(strSource);
          cs.Write(byt, 0, byt.Length);
          cs.FlushFinalBlock();
          cs.Close();
          return Convert.ToBase64String(ms.ToArray());
        }
        /// summary>
        /// DES解密
        /// /summary>
        /// param name="strSource">待解密的字串/param>
        /// param name="key">32位Key值/param>
        /// returns>解密后的字符串/returns>
        public string DESDecrypt(string strSource)
        {
          return DESDecrypt(strSource, DESKey);
        }
        public string DESDecrypt(string strSource, byte[] key)
        {
          SymmetricAlgorithm sa = Rijndael.Create();
          sa.Key = key;
          sa.Mode = CipherMode.ECB;
          sa.Padding = PaddingMode.Zeros;
          ICryptoTransform ct = sa.CreateDecryptor();
          byte[] byt = Convert.FromBase64String(strSource);
          MemoryStream ms = new MemoryStream(byt);
          CryptoStream cs = new CryptoStream(ms, ct, CryptoStreamMode.Read);
          StreamReader sr = new StreamReader(cs, Encoding.Unicode);
          return sr.ReadToEnd();
        }
        #endregion
        #region 一个用hash实现的加密解密方法
        /// summary>
        /// 加密
        /// /summary>
        /// param name="src">/param>
        /// returns>/returns>
        public static string EncryptStrByHash(string src)
        {
          if (src.Length == 0)
          {
            return "";
          }
          byte[] HaKey = System.Text.Encoding.ASCII.GetBytes((src + "Test").ToCharArray());
          byte[] HaData = new byte[20];
          HMACSHA1 Hmac = new HMACSHA1(HaKey);
          CryptoStream cs = new CryptoStream(Stream.Null, Hmac, CryptoStreamMode.Write);
          try
          {
            cs.Write(HaData, 0, HaData.Length);
          }
          finally
          {
            cs.Close();
          }
          string HaResult = System.Convert.ToBase64String(Hmac.Hash).Substring(0, 16);
          byte[] RiKey = System.Text.Encoding.ASCII.GetBytes(HaResult.ToCharArray());
          byte[] RiDataBuf = System.Text.Encoding.ASCII.GetBytes(src.ToCharArray());
          byte[] EncodedBytes =  { };
          MemoryStream ms = new MemoryStream();
          RijndaelManaged rv = new RijndaelManaged();
          cs = new CryptoStream(ms, rv.CreateEncryptor(RiKey, RiKey), CryptoStreamMode.Write);
          try
          {
            cs.Write(RiDataBuf, 0, RiDataBuf.Length);
            cs.FlushFinalBlock();
            EncodedBytes = ms.ToArray();
          }
          finally
          {
            ms.Close();
            cs.Close();
          }
          return HaResult + System.Convert.ToBase64String(EncodedBytes);
        }
        /// summary>
        /// 解密
        /// /summary>
        /// param name="src">/param>
        /// returns>/returns>
        public static string DecrypStrByHash(string src)
        {
          if (src.Length  40) return "";
          byte[] SrcBytes = System.Convert.FromBase64String(src.Substring(16));
          byte[] RiKey = System.Text.Encoding.ASCII.GetBytes(src.Substring(0, 16).ToCharArray());
          byte[] InitialText = new byte[SrcBytes.Length];
          RijndaelManaged rv = new RijndaelManaged();
          MemoryStream ms = new MemoryStream(SrcBytes);
          CryptoStream cs = new CryptoStream(ms, rv.CreateDecryptor(RiKey, RiKey), CryptoStreamMode.Read);
          try
          {
            cs.Read(InitialText, 0, InitialText.Length);
          }
          finally
          {
            ms.Close();
            cs.Close();
          }
          System.Text.StringBuilder Result = new System.Text.StringBuilder();
          for (int i = 0; i  InitialText.Length; ++i) if (InitialText[i] > 0) Result.Append((char)InitialText[i]);
          return Result.ToString();
        }
        /// summary>
        /// 对加密后的密文重新编码,如果密文长>16,则去掉前16个字符,如果长度小于16,返回空字符串
        /// /summary>
        /// param name="s">/param>
        /// returns>/returns>
        public string ReEncryptStrByHash(string s)
        {
          string e = Encrypt.EncryptStrByHash(s);
          return ((e.Length > 16) ? e.Substring(16) : "");
        }
        #endregion
        #region Md5加密,生成16位或32位,生成的密文都是大写
        public static string Md5To16(string str)
        {
          MD5CryptoServiceProvider md5 = new MD5CryptoServiceProvider();
          string t2 = BitConverter.ToString(md5.ComputeHash(UTF8Encoding.Default.GetBytes(str)), 4, 8);
          t2 = t2.Replace("-", "");
          return t2;
        }
        //// summary>
        /// MD5 32位加密
        /// /summary>
        /// param name="str">/param>
        /// returns>/returns>
        public static string Md5To32(string str)
        {
          string pwd = "";
          MD5 md5 = MD5.Create();
          byte[] s = md5.ComputeHash(Encoding.UTF8.GetBytes(str));
          for (int i = 0; i  s.Length; i++)
          {
            pwd = pwd + s[i].ToString("X");
          }
          return pwd;
        }
        #endregion
        #region 3DES加密解密
        public string Encrypt3DES(string str)
        {
          //密钥
          string sKey = "wyw308";
          //  //矢量,可为空
          string sIV = "scf521";
          //  //构造对称算法
          SymmetricAlgorithm mCSP = new TripleDESCryptoServiceProvider();
          ICryptoTransform ct;
          MemoryStream ms;
          CryptoStream cs;
          byte[] byt;
          mCSP.Key = Convert.FromBase64String(sKey);
          mCSP.IV = Convert.FromBase64String(sIV);
          mCSP.Mode = System.Security.Cryptography.CipherMode.ECB;
          mCSP.Padding = System.Security.Cryptography.PaddingMode.PKCS7;
          ct = mCSP.CreateEncryptor(mCSP.Key, mCSP.IV);
          byt = Encoding.UTF8.GetBytes(str);
          ms = new MemoryStream();
          cs = new CryptoStream(ms, ct, CryptoStreamMode.Write);
          cs.Write(byt, 0, byt.Length);
          cs.FlushFinalBlock();
          cs.Close();
          return Convert.ToBase64String(ms.ToArray());
        }
        /// summary>
        /// 带指定密钥和矢量的3DES加密
        /// /summary>
        /// param name="str">/param>
        /// param name="sKey">/param>
        /// param name="sIV">/param>
        /// returns>/returns>
        public string Encrypt3DES(string str, string sKey, string sIV)
        {
          SymmetricAlgorithm mCSP = new TripleDESCryptoServiceProvider();
          ICryptoTransform ct;
          MemoryStream ms;
          CryptoStream cs;
          byte[] byt;
          mCSP.Key = Convert.FromBase64String(sKey);
          mCSP.IV = Convert.FromBase64String(sIV);
          mCSP.Mode = System.Security.Cryptography.CipherMode.ECB;
          mCSP.Padding = System.Security.Cryptography.PaddingMode.PKCS7;
          ct = mCSP.CreateEncryptor(mCSP.Key, mCSP.IV);
          byt = Encoding.UTF8.GetBytes(str);
          ms = new MemoryStream();
          cs = new CryptoStream(ms, ct, CryptoStreamMode.Write);
          cs.Write(byt, 0, byt.Length);
          cs.FlushFinalBlock();
          cs.Close();
          return Convert.ToBase64String(ms.ToArray());
        }
        //解密
        public string Decrypt3DES(string Value)
        {
          string sKey = "wyw308";
          string sIV = "scf521";
          SymmetricAlgorithm mCSP = new TripleDESCryptoServiceProvider();
          ICryptoTransform ct;
          MemoryStream ms;
          CryptoStream cs;
          byte[] byt;
          mCSP.Key = Convert.FromBase64String(sKey);
          mCSP.IV = Convert.FromBase64String(sIV);
          mCSP.Mode = System.Security.Cryptography.CipherMode.ECB;
          mCSP.Padding = System.Security.Cryptography.PaddingMode.PKCS7;
          ct = mCSP.CreateDecryptor(mCSP.Key, mCSP.IV);
          byt = Convert.FromBase64String(Value);
          ms = new MemoryStream();
          cs = new CryptoStream(ms, ct, CryptoStreamMode.Write);
          cs.Write(byt, 0, byt.Length);
          cs.FlushFinalBlock();
          cs.Close();
          return Encoding.UTF8.GetString(ms.ToArray());
        }
        /// summary>
        /// 带指定密钥和矢量的3DES解密
        /// /summary>
        /// param name="Value">/param>
        /// param name="sKey">/param>
        /// param name="sIV">/param>
        /// returns>/returns>
        public string Decrypt3DES(string str, string sKey, string sIV)
        {
          SymmetricAlgorithm mCSP = new TripleDESCryptoServiceProvider();
          ICryptoTransform ct;
          MemoryStream ms;
          CryptoStream cs;
          byte[] byt;
          mCSP.Key = Convert.FromBase64String(sKey);
          mCSP.IV = Convert.FromBase64String(sIV);
          mCSP.Mode = System.Security.Cryptography.CipherMode.ECB;
          mCSP.Padding = System.Security.Cryptography.PaddingMode.PKCS7;
          ct = mCSP.CreateDecryptor(mCSP.Key, mCSP.IV);
          byt = Convert.FromBase64String(str);
          ms = new MemoryStream();
          cs = new CryptoStream(ms, ct, CryptoStreamMode.Write);
          cs.Write(byt, 0, byt.Length);
          cs.FlushFinalBlock();
          cs.Close();
          return Encoding.UTF8.GetString(ms.ToArray());
        }
        #endregion
        #region 一个简单的加密解密方法,只支持英文
        public static string EnCryptEnStr(string str) //倒序加1加密
        {
          byte[] by = new byte[str.Length];
          for (int i = 0;
           i = str.Length - 1;
           i++)
          {
            by[i] = (byte)((byte)str[i] + 1);
          }
          str = "";
          for (int i = by.Length - 1;
           i >= 0;
           i--)
          {
            str += ((char)by[i]).ToString();
          }
          return str;
        }
        public static string DeCryptEnStr(string str) //顺序减1解码
        {
          byte[] by = new byte[str.Length];
          for (int i = 0;
           i = str.Length - 1;
           i++)
          {
            by[i] = (byte)((byte)str[i] - 1);
          }
          str = "";
          for (int i = by.Length - 1;
           i >= 0;
           i--)
          {
            str += ((char)by[i]).ToString();
          }
          return str;
        }
        #endregion
        #region 一个简单的加密解密方法,在上一个的基础上支持中文
        public static string EnCryptCnStr(string str)
        {
          string htext = ""; // blank text
          for (int i = 0; i  str.Length; i++)
          {
            htext = htext + (char)(str[i] + 10 - 1 * 2);
          }
          return htext;
        }
        public static string DeCryptCnStr(string str)
        {
          string dtext = "";
          for (int i = 0; i  str.Length; i++)
          {
            dtext = dtext + (char)(str[i] - 10 + 1 * 2);
          }
          return dtext;
        }
        #endregion
        #region Url地址编码解码
        /// summary>
        /// 编码Url地址
        /// /summary>
        /// param name="url">/param>
        /// returns>/returns>
        public static string UrlEncode(string url)
        {
          byte[] mByte = null;
          mByte = System.Text.Encoding.GetEncoding("GB2312").GetBytes(url);
          return System.Web.HttpUtility.UrlEncode(mByte);
        }
        /// summary>
        /// 解码Url地址
        /// /summary>
        /// param name="url">/param>
        /// returns>/returns>
        public static string UrlDecode(string url)
        {
          return HttpUtility.UrlDecode(url, System.Text.Encoding.GetEncoding("GB2312"));
        }
        #endregion
    

    以上所述就是本文的全部内容了,希望大家能够喜欢。

    您可能感兴趣的文章:
    • ASP.NET MVC结合JavaScript登录、校验和加密
    • asp.net的加密解密技巧
    • 在asp.net中使用加密数据库联接字符串保证数据安全
    • asp.net实现md5加密
    • 在ASP.Net中实现RSA加密的方法
    • 解析Asp.net,C# 纯数字加密解密字符串的应用
    • Asp.net,C# 加密解密字符串的使用详解
    • ASP.NET加密口令的方法实例
    • asp.net中使用cookie与md5加密实现记住密码功能的实现代码
    • Asp.net中Microsoft.Identity的IPasswordHasher加密的默认实现与运用
    上一篇:vs2012创建的ado.net模型无法实例化的解决方案
    下一篇:Ajax+asp.net实现用户登陆
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    ASP.NET加密解密算法分享 ASP.NET,加密解密,算法,分享,