首頁  >  文章  >  後端開發  >  詳解介紹C#是如何取得文件MD5與SHA1

詳解介紹C#是如何取得文件MD5與SHA1

迷茫
迷茫原創
2017-03-26 16:32:491298瀏覽

之前剛開始學習程式設計的時候,總是想著自己寫一些小軟體小工具。

而這個就是經典的檔案MD5校驗,順便加上了一個SHA1。

在網路上下載一些東西時,會有作者提供MD5值。

它的作用就在於我們可以在下載該軟體後,對下載回來的檔案做一次MD5校驗,以確保我們獲得的檔案與該網站提供的檔案為同一檔案。

於是就需要一個MD5校驗工具,那麼就去百度上找,但是國內的下載站就不用說了...捆綁的東西防不勝防。

所以,身為一個程式設計師,就自己來寫一個吧。

分析這個小工具的主要需求是

1.根據路徑找到檔案

#2.取得MD5

3.取得SHA1

非常簡單的一個小工具,

第一個方法直接使用FileInfo 類別建構函式傳入路徑就可以了,因為是做控制台可以直接拖曳文件,這一點還是很方便的。

要注意的是路徑中有空格會報錯。

此方法中s 代表傳入的檔案路徑

static void GetFile(string s)
        {
            try
            {
                FileInfo fi = new FileInfo(s);
                Console.WriteLine("文件路径:{0}", s);
                Console.WriteLine("文件名称:{0}", fi.Name.ToString());
                Console.WriteLine("文件类型:{0}", fi.Extension.ToString());
                Console.WriteLine("文件大小:{0} K", fi.Length / 1024);
                Console.WriteLine("文件创建时间:{0}", fi.CreationTime.ToString());
                Console.WriteLine("上次访问时间:{0}", fi.LastAccessTime.ToString());
                Console.WriteLine("上次写入时间:{0}", fi.LastWriteTime.ToString());
            }
            catch (Exception ex) 
            {
                Console.WriteLine(ex.Message);
            }
        }

第二個方法獲得MD5值,該方法中s 代表傳入的檔案路徑

MD5將整個文件當作一個大文本訊息,透過其不可逆的字串變換演算法,產生了這個唯一的MD5資訊摘要。

static void GetMD5(string s)
        {
            try
            {
                FileStream file = new FileStream(s,FileMode.Open);
                MD5 md5 = new MD5CryptoServiceProvider();
                byte[] retval = md5.ComputeHash(file);
                file.Close();

                StringBuilder sc = new StringBuilder();
                for (int i = 0 ; i<retval.Length ; i++ )
                {
                    sc.Append(retval[i].ToString("x2"));
                }
                Console.WriteLine("文件MD5:{0}",sc);
            }
            catch(Exception ex)
            {
                Console.WriteLine(ex.Message);
            }
        }

第三個方法,獲得SHA1值,該方法中s 代表傳入的檔案路徑

SHA1名為安全雜湊演算法,對於長度小於2^64位元的訊息, SHA1會產生一個160位元的訊息摘要。

SHA1有以下特性:不可以從訊息摘要復原訊息;兩個不同的訊息不會產生同樣的訊息摘要,(但會有1x10 ^ 48分之一的機率出現相同的訊息摘要,一般使用時忽略)。

static void GetSHA1(string s)
        {
            try
            {
                FileStream file = new FileStream(s, FileMode.Open);
                SHA1 sha1 = new SHA1CryptoServiceProvider();
                byte[] retval = sha1.ComputeHash(file);
                file.Close();

                StringBuilder sc = new StringBuilder();
                for (int i = 0; i < retval.Length; i++)
                {
                    sc.Append(retval[i].ToString("x2"));
                }
                Console.WriteLine("文件SHA1:{0}", sc);
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
            }
        }

以上是詳解介紹C#是如何取得文件MD5與SHA1的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn