none
C# 如何檢查一個檔案的MD5? RRS feed

  • 問題

  • 我正打算寫個可以用來查看檔案MD5的小程序, 但是在網上看了有關MD5的用法也不太明白如果才可以計算一個檔案的MD5..

    有高手可以指點一下嗎..?

    我建立了2個button, 2個textbox, 1個openfiledialog
    button1是瀏覽鍵, 按下去會彈出開啟檔案視窗, 選擇好檔案後會顯示到textbox1上
    而button2是檢查鍵, 按下去便會計算textbox1位置的MD5

    using System;  
    using System.Collections.Generic;  
    using System.ComponentModel;  
    using System.Data;  
    using System.Drawing;  
    using System.Linq;  
    using System.Text;  
    using System.Windows.Forms;  
     
    namespace eMD5  
    {  
        public partial class Form1 : Form  
        {  
            public Form1()  
            {  
                InitializeComponent();  
            }  
     
            private void button1_Click(object sender, EventArgs e)  
            {  
                if (openFileDialog1.ShowDialog() == DialogResult.OK)  
                {  
                    textBox1.Text = openFileDialog1.FileName;  
                }  
            }  
        }  
    }  
     
    2009年2月7日 下午 06:10

解答

所有回覆

  • HI,

    要計算檔案內容經MD5處理的結果可以這樣做:

    1) 參考System.Web組件
    2) using System.Web.Security;
    2) 計算:

    結果=FormsAuthentication.HashPasswordForStoringInConfigFile(textBox1.Text, "md5"); 

    PS:建議改用sha1取代md5

    tihs
    • 已標示為解答 Lolota Lee 2009年2月23日 上午 02:25
    2009年2月8日 上午 03:37
    • 已標示為解答 Lolota Lee 2009年2月23日 上午 02:25
    2009年2月8日 上午 03:47
  • 我在網上找到個C#的MD5代碼, 但是使用後計算出來的MD5並不正確... 請各位指點一下..

    using System;  
    using System.Collections.Generic;  
    using System.ComponentModel;  
    using System.Data;  
    using System.Drawing;  
    using System.Linq;  
    using System.Security.Cryptography;  
    using System.Text;  
    using System.Web;  
    using System.Windows.Forms;  
     
    namespace eMD5  
    {  
        public partial class Form1 : Form  
        {  
            public Form1()  
            {  
                InitializeComponent();  
            }  
     
            public string GetMD5Hash(string input)  
            {  
                MD5CryptoServiceProvider x = new MD5CryptoServiceProvider();  
                byte[] bs = Encoding.UTF8.GetBytes(input);  
                bs = x.ComputeHash(bs);  
                StringBuilder s = new StringBuilder();  
                foreach (byte b in bs)  
                {  
                    s.Append(b.ToString("x2").ToLower());  
                }  
                string password = s.ToString();  
                return password;  
            }  
     
            private void button1_Click(object sender, EventArgs e)  
            {  
                if (openFileDialog1.ShowDialog() == DialogResult.OK)  
                {  
                    textBox1.Text = openFileDialog1.FileName;  
                }  
            }  
     
            private void button2_Click(object sender, EventArgs e)  
            {  
                textBox2.Text = GetMD5Hash(textBox1.Text);  
            }  
        }  
    }  
     
    2009年2月13日 下午 04:24
  • 你計算的是"檔案名稱"的MD5
    而非"檔案"的MD5
    請使用FileStream讀入檔案並傳入ComputeHash來計算
    C#學習者,修練中
    • 已提議為解答 kgame 2009年3月20日 下午 12:36
    2009年3月20日 下午 12:35