亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

詳細介紹C#之文件校驗工具的開發(fā)及問題

 更新時間:2015年07月31日 17:13:59   作者:WeihanLi  
目前校驗文件使用最多的是MD值和SHA值,不外乎有些使用CRC,前段時間微軟發(fā)布了VisualStudio正式版,win鏡像,微軟官方給出的校驗方式都是校驗文件的SHA值。下面詳細介紹C#之文件校驗工具的開發(fā)及問題,需要的朋友可以參考下

.加密算法的熟悉
    目前校驗文件使用最多的是MD值和SHA值,不外乎有些使用CRC,前段時間微軟發(fā)布了VisualStudio正式版,win鏡像,微軟官方給出的校驗方式都是校驗文件的SHA值。

       C#進行MD加密與SHA加密的實現(xiàn)總結(jié)在這里
.文件的加密計算
知道了如何進行普通字符串的加密還不夠,我們要校驗的文件的MD值或SHA值,接下來熟悉如何獲取文件的MD值和SHA值
獲取文件的MD值 

public static string GetFileMD(string filePath)
     {
       MDCryptoServiceProvider md = new MDCryptoServiceProvider();
       FileStream fs = new FileStream(filePath, FileMode.Open, FileAccess.Read, FileShare.Read);
       byte[] result = md.ComputeHash(fs);
       md.Clear();
       StringBuilder sb = new StringBuilder();
       for (int i = ; i < result.Length; i++)
       {
         sb.Append(result[i].ToString("X"));
       }
       return sb.ToString();
     }

 
獲取文件的SHA值
         

 public static string GetFileSHA(string filePath)
     {
       SHA sha = new SHACryptoServiceProvider();
       FileStream fs = new FileStream(filePath, FileMode.Open, FileAccess.Read, FileShare.Read);
       byte[] result = sha.ComputeHash(fs);
       sha.Clear();
       StringBuilder sb = new StringBuilder();
       for (int i = ; i < result.Length; i++)
       {
         sb.Append(result[i].ToString("X"));
       }
       return sb.ToString();
     }

.文件加密數(shù)據(jù)結(jié)構(gòu)優(yōu)化
這么多方法,有許多方法大多數(shù)代碼還都是重復(fù)的,如何讓代碼更精簡呢?重構(gòu),提高代碼的復(fù)用率,最初想的是建一個基類,其他各種具體實現(xiàn)都在繼承它,但又覺得好麻煩,要新建好幾個類,最終決定,建一個類,用最簡單的重構(gòu),封裝方法。
最終加密幫助類實現(xiàn)代碼如下:
public static class ValidHelper
   {
     public static string GetFileHash(string filePath, HashAlgorithm algorithm)
     {
       FileStream fs = new FileStream(filePath, FileMode.Open, FileAccess.Read, FileShare.Read);
       byte[] result = algorithm.ComputeHash(fs);
       algorithm.Clear();
       StringBuilder sb = new StringBuilder();
       for (int i = ; i < result.Length; i++)
       {
         sb.Append(result[i].ToString("X"));
       }
       return sb.ToString();
     }
 
     public static string GetFileMD(string filePath)
     {
       MDCryptoServiceProvider md = new MDCryptoServiceProvider();
       return GetFileHash(filePath, md);
     }
 
     public static string GetFileSHA(string filePath)
     {
       SHA sha = new SHACryptoServiceProvider();
       return GetFileHash(filePath, sha);
     }
 
     public static string GetFileSHA(string filePath)
     {
       SHA sha = SHA.Create();
       return GetFileHash(filePath, sha);
     }
 
     public static string GetFileSHA(string filePath)
     {
       SHA sha = SHA.Create();
       return GetFileHash(filePath, sha);
     }
 
     public static string GetFileSHA(string filePath)
     {
       SHA sha = SHA.Create();
       return GetFileHash(filePath, sha);
     }
   }

.完成后測試與分析
代碼完成之后便是測試,在網(wǎng)上找一個文件校驗工具(使用的軟媒魔方里的校驗工具),進行比對,看自己的校驗工具是否與軟媒魔方的校驗工具的校驗結(jié)果是否一致,經(jīng)校驗,沒有錯誤,最初測試的小文件,后來下載了一個win系統(tǒng),使用自己的校驗工具,校驗是否和微軟官方給出的SHA值一致時,小工具直接卡死了,過了好長時間才出來結(jié)果,這說明這個小工具還待優(yōu)化,尤其是處理大文件。
在網(wǎng)上查找資料,看到有這樣的實現(xiàn)思路,將文件在內(nèi)存中的位置分段,比如說分成段,分個線程同時開始計算,最后將個計算值再經(jīng)過處理得到整個文件的SHA值或MD值。然而愚鈍,不知道該如何實現(xiàn),望大神看到之后能給予一些指導(dǎo),萬分感謝。

以上介紹就是本文的全部內(nèi)容,希望大家喜歡。

相關(guān)文章

  • C#泛型接口的協(xié)變和逆變

    C#泛型接口的協(xié)變和逆變

    本文詳細講解了C#泛型接口的協(xié)變和逆變,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-04-04
  • C# 實現(xiàn)Trim方法去除字符串前后的所有空格

    C# 實現(xiàn)Trim方法去除字符串前后的所有空格

    這篇文章主要介紹了C# 實現(xiàn)Trim方法去除字符串前后的所有空格,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-12-12
  • Base64編碼解碼原理及C#編程實例

    Base64編碼解碼原理及C#編程實例

    這篇文章主要介紹了Base64編碼解碼原理及C#編程實例,本文講解了Base64編碼由來、Base64編碼原理、C#編程實現(xiàn),需要的朋友可以參考下
    2014-10-10
  • C#實現(xiàn)txt定位指定行完整實例

    C#實現(xiàn)txt定位指定行完整實例

    這篇文章主要介紹了C#實現(xiàn)txt定位指定行的方法,涉及C#針對文本文件進行光標(biāo)定位的技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-08-08
  • c# SqlDataAdapter中的Fill是怎么實現(xiàn)的

    c# SqlDataAdapter中的Fill是怎么實現(xiàn)的

    這篇文章主要介紹了c# SqlDataAdapter中的Fill是怎么實現(xiàn)的,文中講解非常細致,代碼幫助大家更好的理解和學(xué)習(xí),感興趣的朋友可以了解下
    2020-07-07
  • 簡單實現(xiàn)winform編輯器

    簡單實現(xiàn)winform編輯器

    這篇文章主要教大家如何簡單實現(xiàn)winform編輯器,功能很簡單,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-08-08
  • c#之事件用法

    c#之事件用法

    這篇文章介紹了c#中事件的用法,文中通過示例代碼介紹的非常詳細。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-04-04
  • c#多線程中Lock()關(guān)鍵字的用法小結(jié)

    c#多線程中Lock()關(guān)鍵字的用法小結(jié)

    本篇文章主要是對c#多線程中Lock()關(guān)鍵字的用法進行了詳細的總結(jié)介紹,需要的朋友可以過來參考下,希望對大家有所幫助
    2014-01-01
  • c#對list排序示例

    c#對list排序示例

    本文主要介紹了c#對List成員排序的示例,大家參考使用吧
    2014-01-01
  • C#通過接口與線程通信(捕獲線程狀態(tài))示例代碼

    C#通過接口與線程通信(捕獲線程狀態(tài))示例代碼

    本文介紹C#通過接口與線程通信(捕獲線程狀態(tài)),并提供簡單的示例代碼供參考
    2013-12-12

最新評論