文件MD5值計算

在文件完整性中比較中,在網絡上我們經常會看到一些文件的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 ---
    }




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章