• 散列哈希加密


      /// <summary>
      /// 散列哈希加密(MD5 SHA HMACSHA)
      /// </summary>
      public static class HashAlgorithmEncrypt
      {
        /// <summary>
        ///返回值类型
        /// </summary>
        public enum UpperLower
        {
          /// <summary>
          /// 大写
          /// </summary>
          Upper,
          /// <summary>
          /// 小写
          /// </summary>
          Lower
        }
    
        /// <summary>
        /// 位数
        /// </summary>
        public enum Bit
        {
          /// <summary>
          /// 16位
          /// </summary>
          bit16,
          /// <summary>
          /// 32位
          /// </summary>
          bit32
        }
    
        #region MD5
    
        /// <summary>
        /// MD5加密
        /// </summary>
        /// <param name="data">要加密的明文</param>
        /// <param name="dataEncoding">加载要加密的明文的编码方式</param>
        /// <param name="bit">MD5加密16位或32位</param>
        /// <param name="upperLower">密文值返回大小写</param>
        /// <returns></returns>
        public static string MD5Encrypt(string data, Encoding dataEncoding, Bit bit, UpperLower upperLower)
        {
          using (MD5CryptoServiceProvider md5 = new MD5CryptoServiceProvider())
          {
            byte[] dataBytes = md5.ComputeHash(dataEncoding.GetBytes(data));
            string encryptStr = (bit == Bit.bit16) ? BitConverter.ToString(dataBytes, 4, 8) : BitConverter.ToString(dataBytes);
            encryptStr = encryptStr.Replace("-", "");
            return upperLower == UpperLower.Upper ? encryptStr.ToUpper() : encryptStr.ToLower();
          }
        }
    
        #endregion
    
        #region SHA
    
        /// <summary>
        /// SHA1
        /// </summary>
        /// <param name="data">要加密的明文</param>
        /// <param name="dataEncoding">加载要加密的明文的编码方式</param>
        /// <param name="upperLower">密文值返回大小写</param>
        /// <returns></returns>
        public static string SHA1Encrypt(string data, Encoding dataEncoding, UpperLower upperLower)
        {
          StringBuilder sb = new StringBuilder();
          using (SHA1Managed sha1 = new SHA1Managed())
          {
            byte[] dataBytes = dataEncoding.GetBytes(data);
            byte[] encryptBytes = sha1.ComputeHash(dataBytes);
            for (int i = 0; i < encryptBytes.Length; i++)
            {
              sb.Append(upperLower == UpperLower.Upper ? encryptBytes[i].ToString("X2") : encryptBytes[i].ToString("x2"));
            }
            return sb.ToString();
          }
        }
    
        /// <summary>
        /// SHA256
        /// </summary>
        /// <param name="data">要加密的明文</param>
        /// <param name="dataEncoding">加载要加密的明文的编码方式</param>
        /// <param name="upperLower">密文值返回大小写</param>
        /// <returns></returns>
        public static string SHA256Encrypt(string data, Encoding dataEncoding, UpperLower upperLower)
        {
          StringBuilder sb = new StringBuilder();
          using (SHA256Managed sha256 = new SHA256Managed())
          {
            byte[] dataBytes = dataEncoding.GetBytes(data);
            byte[] encryptBytes = sha256.ComputeHash(dataBytes);
            for (int i = 0; i < encryptBytes.Length; i++)
            {
              sb.Append(upperLower == UpperLower.Upper ? encryptBytes[i].ToString("X2") : encryptBytes[i].ToString("x2"));
            }
            return sb.ToString();
          }
        }
    
        /// <summary>
        /// SHA384
        /// </summary>
        /// <param name="data">要加密的明文</param>
        /// <param name="dataEncoding">加载要加密的明文的编码方式</param>
        /// <param name="upperLower">密文值返回大小写</param>
        /// <returns></returns>
        public static string SHA384Encrypt(string data, Encoding dataEncoding, UpperLower upperLower)
        {
          StringBuilder sb = new StringBuilder();
          using (SHA384Managed sha384 = new SHA384Managed())
          {
            byte[] dataBytes = dataEncoding.GetBytes(data);
            byte[] encryptBytes = sha384.ComputeHash(dataBytes);
            for (int i = 0; i < encryptBytes.Length; i++)
            {
              sb.Append(upperLower == UpperLower.Upper ? encryptBytes[i].ToString("X2") : encryptBytes[i].ToString("x2"));
            }
            return sb.ToString();
          }
        }
    
        /// <summary>
        /// SHA512
        /// </summary>
        /// <param name="data">要加密的明文</param>
        /// <param name="dataEncoding">加载要加密的明文的编码方式</param>
        /// <param name="upperLower">密文值返回大小写</param>
        /// <returns></returns>
        public static string SHA512Encrypt(string data, Encoding dataEncoding, UpperLower upperLower)
        {
          StringBuilder sb = new StringBuilder();
          using (SHA512Managed sha512 = new SHA512Managed())
          {
            byte[] dataBytes = dataEncoding.GetBytes(data);
            byte[] encryptBytes = sha512.ComputeHash(dataBytes);
            for (int i = 0; i < encryptBytes.Length; i++)
            {
              sb.Append(upperLower == UpperLower.Upper ? encryptBytes[i].ToString("X2") : encryptBytes[i].ToString("x2"));
            }
            return sb.ToString();
          }
        }
    
        #endregion
    
        #region HMACSHA
    
        /// <summary>
        /// HMACMD5
        /// </summary>
        /// <param name="data">要加密的明文</param>
        /// <param name="key">秘钥</param>
        /// <param name="dataEncoding">加载要加密的明文的编码方式</param>
        /// <param name="upperLower">密文值返回大小写</param>
        /// <returns></returns>
        public static string HMACMD5Encrypt(string data, string key, Encoding dataEncoding, UpperLower upperLower)
        {
          StringBuilder sb = new StringBuilder();
          using (HMACMD5 hmacmd5 = new HMACMD5())
          {
            hmacmd5.Key = System.Text.Encoding.UTF8.GetBytes(key);
            byte[] dataBytes = dataEncoding.GetBytes(data);
            byte[] encryptBytes = hmacmd5.ComputeHash(dataBytes);
            for (int i = 0; i < encryptBytes.Length; i++)
            {
              sb.Append(upperLower == UpperLower.Upper ? encryptBytes[i].ToString("X2") : encryptBytes[i].ToString("x2"));
            }
            return sb.ToString();
          }
        }
    
        /// <summary>
        /// HMACSHA1
        /// </summary>
        /// <param name="data">要加密的明文</param>
        /// <param name="key">秘钥</param>
        /// <param name="dataEncoding">加载要加密的明文的编码方式</param>
        /// <param name="upperLower">密文值返回大小写</param>
        /// <returns></returns>
        public static string HMACSHA1Encrypt(string data, string key, Encoding dataEncoding, UpperLower upperLower)
        {
          StringBuilder sb = new StringBuilder();
          using (HMACSHA1 hmacsha1 = new HMACSHA1())
          {
            hmacsha1.Key = System.Text.Encoding.UTF8.GetBytes(key);
            byte[] dataBytes = dataEncoding.GetBytes(data);
            byte[] encryptBytes = hmacsha1.ComputeHash(dataBytes);
            for (int i = 0; i < encryptBytes.Length; i++)
            {
              sb.Append(upperLower == UpperLower.Upper ? encryptBytes[i].ToString("X2") : encryptBytes[i].ToString("x2"));
            }
            return sb.ToString();
          }
        }
    
        /// <summary>
        /// HMACSHA256
        /// </summary>
        /// <param name="data">要加密的明文</param>
        /// <param name="key">秘钥</param>
        /// <param name="dataEncoding">加载要加密的明文的编码方式</param>
        /// <param name="upperLower">密文值返回大小写</param>
        /// <returns></returns>
        public static string HMACSHA256Encrypt(string data, string key, Encoding dataEncoding, UpperLower upperLower)
        {
          StringBuilder sb = new StringBuilder();
          using (HMACSHA256 hmacsha256 = new HMACSHA256())
          {
            hmacsha256.Key = System.Text.Encoding.UTF8.GetBytes(key);
            byte[] dataBytes = dataEncoding.GetBytes(data);
            byte[] encryptBytes = hmacsha256.ComputeHash(dataBytes);
            for (int i = 0; i < encryptBytes.Length; i++)
            {
              sb.Append(upperLower == UpperLower.Upper ? encryptBytes[i].ToString("X2") : encryptBytes[i].ToString("x2"));
            }
            return sb.ToString();
          }
        }
    
        /// <summary>
        /// HMACSHA384(结果有问题)
        /// </summary>
        /// <param name="data">要加密的明文</param>
        /// <param name="key">秘钥</param>
        /// <param name="dataEncoding">加载要加密的明文的编码方式</param>
        /// <param name="upperLower">密文值返回大小写</param>
        /// <returns></returns>
        public static string HMACSHA384Encrypt(string data, string key, Encoding dataEncoding, UpperLower upperLower)
        {
          StringBuilder sb = new StringBuilder();
          using (HMACSHA384 hmacsha384 = new HMACSHA384())
          {
            hmacsha384.Key = System.Text.Encoding.UTF8.GetBytes(key);
            byte[] dataBytes = dataEncoding.GetBytes(data);
            byte[] encryptBytes = hmacsha384.ComputeHash(dataBytes);
            for (int i = 0; i < encryptBytes.Length; i++)
            {
              sb.Append(upperLower == UpperLower.Upper ? encryptBytes[i].ToString("X2") : encryptBytes[i].ToString("x2"));
            }
            return sb.ToString();
          }
        }
    
        /// <summary>
        /// HMACSHA512
        /// </summary>
        /// <param name="data">要加密的明文</param>
        /// <param name="key">秘钥</param>
        /// <param name="dataEncoding">加载要加密的明文的编码方式</param>
        /// <param name="upperLower">密文值返回大小写</param>
        /// <returns></returns>
        public static string HMACSHA512Encrypt(string data, string key, Encoding dataEncoding, UpperLower upperLower)
        {
          StringBuilder sb = new StringBuilder();
          using (HMACSHA512 hmacsha512 = new HMACSHA512())
          {
            hmacsha512.Key = System.Text.Encoding.UTF8.GetBytes(key);
            byte[] dataBytes = dataEncoding.GetBytes(data);
            byte[] encryptBytes = hmacsha512.ComputeHash(dataBytes);
            for (int i = 0; i < encryptBytes.Length; i++)
            {
              sb.Append(upperLower == UpperLower.Upper ? encryptBytes[i].ToString("X2") : encryptBytes[i].ToString("x2"));
            }
            return sb.ToString();
          }
        }
    
        #endregion
    
      }
  • 相关阅读:
    python配置apache的web服务器方法(python的CGI配置)
    【转】移动web资源整理
    CSS实现背景透明,文字不透明,兼容所有浏览器
    html5 css3 如何绘制扇形任意角度
    Chrome 将默认不播放非重要 Flash 内容
    微信video标签全屏无法退出bug
    百度bae定时任务使用方法
    判断浏览器是否支持某个css3属性的javascript方法
    javascript检测是否安装了flash
    移动前端不得不了解的html5 head 头标签
  • 原文地址:https://www.cnblogs.com/tlmbem/p/10798865.html
Copyright © 2020-2023  润新知