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:ScaleType与Matrix相关
    Android:不同drawable文件夹的区别
    Android关于inflate的root参数
    Android:手把手教你打造可缩放移动的ImageView(下)
    Android:手把手教你打造可缩放移动的ImageView(上)
    在android studio中集成javah, ndk-build进行JNI开发
    彻底理解Toast原理和解决小米MIUI系统上没法弹Toast的问题
    Java基础知识
    从.NET的宠物商店到Android MVC MVP
    从零开始搭建架构实施Android项目
  • 原文地址:https://www.cnblogs.com/zhanhengzong/p/3035277.html
Copyright © 2011-2022 走看看