zoukankan      html  css  js  c++  java
  • 计算字符串和文件的MD5值

            //计算字符串的MD5值
            public string GetMD5(string sDataIn)
            {
                MD5CryptoServiceProvider md5 = new MD5CryptoServiceProvider();
                byte[] bytValue, bytHash;
                bytValue = System.Text.Encoding.UTF8.GetBytes(sDataIn);
                bytHash = md5.ComputeHash(bytValue);
                md5.Clear();
                string sTemp = "";
                for (int i = 0; i < bytHash.Length; i++)
                {
                    sTemp += bytHash[i].ToString("X").PadLeft(2, '0');
                }
                return sTemp.ToLower();
            }
            
    
            //计算文件的MD5值
            public string MD5Value(string filepath)
            {
                MD5 md5 = new MD5CryptoServiceProvider();
                byte[] md5ch;
                using (FileStream fs = File.OpenRead(filepath))
                {
                    md5ch = md5.ComputeHash(fs);
                }
                md5.Clear();
                string strMd5 = "";
                for (int i = 0; i < md5ch.Length - 1; i++)
                {
                    strMd5 += md5ch[i].ToString("x").PadLeft(2, '0');
                }
                return strMd5;
            }
    MD5CryptoServiceProvider继承MD5类,MD5类实现IDisposable接口,应用using
    private static string GetMD5FromString(string msg)
            {
                //1.创建一个用来计算MD5值的类的对象
                using (MD5 md5 = MD5.Create())
                {
                    //把字符串转换为byte[]
                    //注意:如果字符串中包含汉字,则这里会把汉字使用utf-8编码转换为byte[],当其他地方
                    //计算MD5值的时候,如果对汉字使用了不同的编码,则同样的汉字生成的byte[]是不一样的,所以计算出的MD5值也就不一样了。
                    byte[] msgBuffer = Encoding.Default.GetBytes(msg);
    
                    //2.计算给定字符串的MD5值
                    //返回值就是就算后的MD5值,如何把一个长度为16的byte[]数组转换为一个长度为32的字符串:就是把每个byte转成16进制同时保留2位即可。
                    byte[] md5Buffer = md5.ComputeHash(msgBuffer);
                    //md5.Clear();//释放资源-->using不用释放
    
                    StringBuilder sbMd5 = new StringBuilder();
                    for (int i = 0; i < md5Buffer.Length; i++)
                    {
                        sbMd5.Append(md5Buffer[i].ToString("x2"));
                    }
                    return sbMd5.ToString();
                }
            }
    
    
            private static string GetMD5FromFile(string path)
            {
                using (MD5 md5 = MD5.Create())
                {
                    using (FileStream fsRead = File.OpenRead(path))
                    {
                        byte[] bytes = md5.ComputeHash(fsRead);
                        //md5.Clear();//释放资源-->using不用释放
                        StringBuilder sbMd5 = new StringBuilder();
                        for (int i = 0; i < bytes.Length; i++)
                        {
                            sbMd5.Append(bytes[i].ToString("X2"));
                        }
                        return sbMd5.ToString();
                    }
                }
            }
  • 相关阅读:
    java基础部分的一些有意思的东西。
    antdvue按需加载插件babelpluginimport报错
    阿超的烦恼 javaScript篇
    .NET E F(Entity Framework)框架 DataBase First 和 Code First 简单用法。
    JQuery获得input ID相同但是type不同的方法
    gridview的删除,修改,数据绑定处理
    jgGrid数据格式
    Cannot read configuration file due to insufficient permissions
    Invoke action which type of result is JsonResult on controller from view using Ajax or geJSon
    Entity model数据库连接
  • 原文地址:https://www.cnblogs.com/T-J-D/p/3339097.html
Copyright © 2011-2022 走看看