zoukankan      html  css  js  c++  java
  • MD5编码

    1   x2方式和x 方式的区别是 比如 比特为 0  x2显示的是 07 x显示的是 7 我们如果是要固定位32位MD5编码的话就使用x2方式

    字符串MD5
    public static string GetMD5(string str) 
    { 
        StringBuilder sb = new StringBuilder(); 
        foreach (byte b in System.Security.Cryptography.MD5.Create().ComputeHash(Encoding.UTF8.GetBytes(str))) 
        { 
            sb.Append(b.ToString("x2")); 
        } 
        return sb.ToString(); 
    }

    对文件流进行MD5加密

    对文件流进行MD5加密
    /// <summary>
         /// 对文件流进行MD5加密
         /// </summary>
         /// <param name="filePath"></param>
         /// <returns></returns>
         /// <example></example>
         public static string MD5Stream(string filePath)
         {
             FileStream fs = new FileStream(filePath, FileMode.Open, FileAccess.Read, FileShare.Read);
           
             MD5CryptoServiceProvider md5 = new MD5CryptoServiceProvider();
             md5.ComputeHash(fs);
             fs.Close();
           
             byte[] b = md5.Hash;
             md5.Clear();
           
             StringBuilder sb = new StringBuilder(32);
             for (int i = 0; i < b.Length; i++)
             {
                 sb.Append(b[i].ToString("X2"));
             }
           
             Console.WriteLine(sb.ToString());
             Console.ReadLine();
           
             return sb.ToString();
         }

    对文件进行MD5加密

    对文件进行MD5加密
    /// <summary>
          /// 对文件进行MD5加密
          /// </summary>
          /// <param name="filePath"></param>
          public static void MD5File(string filePath)
          {
              FileStream fs = new FileStream(filePath, FileMode.Open, FileAccess.Read, FileShare.Read);
              int bufferSize = 1048576; // 缓冲区大小,1MB
              byte[] buff = new byte[bufferSize];
          
              MD5CryptoServiceProvider md5 = new MD5CryptoServiceProvider();
              md5.Initialize();
          
              long offset = 0;
              while (offset < fs.Length)
              {
                  long readSize = bufferSize;
                  if (offset + readSize > fs.Length)
                  {
                      readSize = fs.Length - offset;
                  }
          
                  fs.Read(buff, 0, Convert.ToInt32(readSize)); // 读取一段数据到缓冲区
          
                  if (offset + readSize < fs.Length) // 不是最后一块
                  {
                      md5.TransformBlock(buff, 0, Convert.ToInt32(readSize), buff, 0);
                  }
                  else // 最后一块
                  {
                      md5.TransformFinalBlock(buff, 0, Convert.ToInt32(readSize));
                  }
          
                  offset += bufferSize;
              }
          
              fs.Close();
              byte[] result = md5.Hash;
              md5.Clear();
          
              StringBuilder sb = new StringBuilder(32);
              for (int i = 0; i < result.Length; i++)
              {
                  sb.Append(result[i].ToString("X2"));
              }
          
              Console.WriteLine(sb.ToString());
              Console.ReadLine();
          }

    返回指定文件的MD5值 

    返回指定文件的MD5值
    /// <summary>  
    /// 返回指定文件的MD5值  
    /// </summary>  
    /// <param name="path"></param>  
    /// <returns></returns>  
    public static string Check(string path)
    {
        if (!File.Exists(path))
            throw new ArgumentException(string.Format("<{0}>, 不存在", path));
        using (FileStream fs = new FileStream(path, FileMode.Open, FileAccess.Read, FileShare.Read))
        {
            MD5CryptoServiceProvider md5Provider = new MD5CryptoServiceProvider();
            byte[] buffer = md5Provider.ComputeHash(fs);
            string resule = BitConverter.ToString(buffer);
            resule = resule.Replace("-", "");
            return resule;
        }
    }
  • 相关阅读:
    Android之旅 刷机 前言
    流程管理的售前意识
    站在企业角度来审视K2
    Android之旅 ROM定制 美化 默认屏的下方操作菜单
    在非K2服务器上部署基于K2的Web Application
    java拦截器与过滤器(转载)
    windows安装rediscluster集群
    SpringBoot使用Nacos配置中心(转载,可用)
    SpringBoot+Dubbo+MybatisPlus整合Seata分布式事务踩坑集合
    转载RabbitMQ教程
  • 原文地址:https://www.cnblogs.com/zhanhengzong/p/3035277.html
Copyright © 2011-2022 走看看