具體引見C#之文件校驗對象的開辟及成績。本站提示廣大學習愛好者:(具體引見C#之文件校驗對象的開辟及成績)文章只能為提供參考,不一定能成為您想要的結果。以下是具體引見C#之文件校驗對象的開辟及成績正文
.加密算法的熟習
今朝校驗文件應用最多的是MD值和SHA值,不過乎有些應用CRC,前段時光微軟宣布了VisualStudio正式版,win鏡像,微軟官方給出的校驗方法都是校驗文件的SHA值。
C#停止MD加密與SHA加密的完成總結在這裡
.文件的加密盤算
曉得了若何停止通俗字符串的加密還不敷,我們要校驗的文件的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(); }
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); } }
.完成後測試與剖析
代碼完成以後就是測試,在網上找一個文件校驗對象(應用的軟媒魔方裡的校驗對象),停止比對,看本身的校驗對象能否與軟媒魔方的校驗對象的校驗成果能否分歧,經校驗,沒有毛病,最後測試的小文件,後來下載了一個win體系,應用本身的校驗對象,校驗能否和微軟官方給出的SHA值分歧時,小對象直接卡逝世了,過了好長時光才出來成果,這解釋這個小對象還待優化,特別是處置年夜文件。
在網上查找材料,看到有如許的完成思緒,將文件在內存中的地位分段,好比說分紅段,分個線程同時開端盤算,最初將個盤算值再經由處置獲得全部文件的SHA值或MD值。但是癡頑,不曉得該若何完成,望年夜神看到以後能賜與一些指點,萬分感激。
以上引見就是本文的全體內容,願望年夜家愛好。