10

C# でファイルの内容のハッシュを計算する必要がありますか? これで、アプリで 2 つのファイル ハッシュを比較できるようになりました。検索しましたが見つかりません。

4

2 に答える 2

24

を使用できますMD5CryptoServiceProvider。これは、テキスト ベースのファイルとバイナリ ファイルで機能します。

byte[] myFileData = File.ReadAllBytes(myFileName);
byte[] myHash = MD5.Create().ComputeHash(myFileData);

または...大きなファイルで作業していて、ファイル全体をメモリにロードしたくない場合:

byte[] myHash;
using (var md5 = MD5.Create())
using (var stream = File.OpenRead(myFileName))
    myHash = md5.ComputeHash(stream);

以下を使用して、2 つのファイルのバイト配列と比較できますEnumerable.SequenceEqual

myHash1.SequenceEqual(myHash2); 

CRC 計算機を作成することもできます。参照: http://damieng.com/blog/2006/08/08/calculating_crc32_in_c_and_net

于 2013-05-01T12:35:07.437 に答える
8

あなたはもっとよく検索する必要があります;)

using System.IO;
using System.Text;
using System.Security.Cryptography;


protected string GetMD5HashFromFile(string fileName)
{
  FileStream file = new FileStream(fileName, FileMode.Open);
  MD5 md5 = new MD5CryptoServiceProvider();
  byte[] retVal = md5.ComputeHash(file);
  file.Close();

  StringBuilder sb = new StringBuilder();
  for (int i = 0; i < retVal.Length; i++)
  {
    sb.Append(retVal[i].ToString("x2"));
  }
  return sb.ToString();
}

このようにファイルをこの関数に渡します。

GetMD5HashFromFile("text1.txt");
GetMD5HashFromFile("text2.txt");
于 2013-05-01T12:33:47.120 に答える