zoukankan      html  css  js  c++  java
  • C# 获取文件MD5、SHA1

           /// <summary>
            /// 计算文件的 MD5 值
            /// </summary>
            /// <param name="fileName">要计算 MD5 值的文件名和路径</param>
            /// <returns>MD5 值16进制字符串</returns>
            public string MD5File(string fileName)
            {
                return HashFile(fileName, "md5");
            }
    
            /// <summary>
            /// 计算文件的 sha1 值
            /// </summary>
            /// <param name="fileName">要计算 sha1 值的文件名和路径</param>
            /// <returns>sha1 值16进制字符串</returns>
            public string SHA1File(string fileName)
            {
                return HashFile(fileName, "sha1");
            }
    
            /// <summary>
            /// 计算文件的哈希值
            /// </summary>
            /// <param name="fileName">要计算哈希值的文件名和路径</param>
            /// <param name="algName">算法:sha1,md5</param>
            /// <returns>哈希值16进制字符串</returns>
            private string HashFile(string fileName, string algName)
            {
                if (!System.IO.File.Exists(fileName))
                    return string.Empty;
    
                System.IO.FileStream fs = new System.IO.FileStream(fileName, System.IO.FileMode.Open, System.IO.FileAccess.Read);
                byte[] hashBytes = HashData(fs, algName);
                fs.Close();
                return ByteArrayToHexString(hashBytes);
            }
    
            /// <summary>
            /// 计算哈希值
            /// </summary>
            /// <param name="stream">要计算哈希值的 Stream</param>
            /// <param name="algName">算法:sha1,md5</param>
            /// <returns>哈希值字节数组</returns>
            private byte[] HashData(System.IO.Stream stream, string algName)
            {
                System.Security.Cryptography.HashAlgorithm algorithm;
                if (algName == null)
                {
                    throw new ArgumentNullException("algName 不能为 null");
                }
                if (string.Compare(algName, "sha1", true) == 0)
                {
                    algorithm = System.Security.Cryptography.SHA1.Create();
                }
                else
                {
                    if (string.Compare(algName, "md5", true) != 0)
                    {
                        throw new Exception("algName 只能使用 sha1 或 md5");
                    }
                    algorithm = System.Security.Cryptography.MD5.Create();
                }
                return algorithm.ComputeHash(stream);
            }
    
            /// <summary>
            /// 字节数组转换为16进制表示的字符串
            /// </summary>
            private string ByteArrayToHexString(byte[] buf)
            {
                return BitConverter.ToString(buf).Replace("-","");
            }
  • 相关阅读:
    重载操作符- 友元函数- 非/模板类重载
    静态成员变量
    函数指针的使用
    高斯消元_HihoCoderOffer6_03
    多重背包(MultPack = ZeroOnePack + CompletePack)
    高斯消元
    textbox文本键盘全选
    BASE64-客户端(js)加码-服务器端(c#)解码,URL传递“汉字参数”解决方法
    Jquery获取input=text 的值
    sql server 2008 不允许保存更改,您所做的更改要求删除并重新创建以下表 的解决办法
  • 原文地址:https://www.cnblogs.com/shy1766IT/p/7307142.html
Copyright © 2011-2022 走看看