现在的位置: 首页 > 综合 > 正文

文件MD5值计算

2017年11月26日 ⁄ 综合 ⁄ 共 1195字 ⁄ 字号 评论关闭

在文件完整性中比较中,在网络上我们经常会看到一些文件的MD5值用来比较下载的文件是否完整一致。这些算法是怎么去实现的呢?下面就是实现的代码片段


    /// <summary>
    /// 文件MD5值
    /// </summary>
    public static class FileMD5
    {
        #region --- MD5效驗碼方法 Begin ---

        /// <summary>
        /// 获取MD5校验码
        /// </summary>
        /// <param name="fileName">文件完整路径</param>
        /// <returns>文件MD5值</returns>
        public static string GetFileMD5(string fileName)
        {
            string md5str = "";
            MD5 md5 = new MD5CryptoServiceProvider();
            using (FileStream fst = new FileStream(fileName, FileMode.Open, FileAccess.Read, FileShare.Read, 8192))
            {
                md5.ComputeHash(fst);
                byte[] hash = md5.Hash;
                StringBuilder sb = new StringBuilder();
                foreach (byte byt in hash)
                {
                    sb.Append(String.Format("{0:X1}", byt));
                }
                md5str = sb.ToString();

            }
            return md5str;
        }


        /// <summary>
        /// 文件MD5验证
        /// </summary>
        /// <param name="md5str">MD5值</param>
        /// <param name="fileName">文件完整路径</param>
        /// <returns>验证结果 True = 成功 False 失败</returns>
        public static bool FileMD5Calibration(string md5str, string fileName)
        {
            bool fc = false;
            MD5 md5 = new MD5CryptoServiceProvider();
            using (FileStream fst = new FileStream(fileName, FileMode.Open, FileAccess.Read, FileShare.Read, 8192))
            {
                md5.ComputeHash(fst);
                byte[] hash = md5.Hash;
                StringBuilder sb = new StringBuilder();
                foreach (byte byt in hash)
                {
                    sb.Append(String.Format("{0:X1}", byt));
                }
                fc = md5str.Equals(sb.ToString());
            }
            return fc;
        }

        #endregion --- MD5效驗碼方法 End ---
    }



抱歉!评论已关闭.