• 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("-","");
            }
  • 相关阅读:
    学习笔记-10
    学习笔记-9
    《网络攻防相关》
    微信小程序云开发不完全指北
    Burp Suite 入门教程(BURP SUITE TUTORIAL )
    kali linux fuzz工具集简述
    kali linux Burp Suite极简使用教程
    kali linux web程序集简述
    kali linux 数据库分析工具简述
    kali linux 64bit 2019.1a下启动bbqsql:No module named coros
  • 原文地址:https://www.cnblogs.com/shy1766IT/p/7307142.html
Copyright © 2020-2023  润新知