• 散列哈希加密


      /// <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
    
      }
  • 相关阅读:
    Selector + 线程池 遇到的问题
    【转】Android TabActivity无法正常bindService解决方法
    Android 中的 Service 全面总结
    【转】IT 圈里有哪些经常被读错的词?
    【转】线程的7种状态及相互转换
    【eoeandroid 特刊】第117期打包网盘下载地址
    使用 Android 自带的 proguard 混淆源码
    Google+ 连接不上的解决办法
    【转】AsyncTask的用法
    winForm简单数据绑定
  • 原文地址:https://www.cnblogs.com/tlmbem/p/10798865.html
Copyright © 2020-2023  润新知