オブジェクトの等値を判定するための関数で、すべての型が実装します。
public virtual int GetHashCode()Object.GetHashCode メソッド (System) | MSDN
たとえばString.GetHashCode()は、その文字列を構成する文字から算出しています。GetHashCode - string.cs
このメソッドが返す値は.NET Frameworkのバージョンやプラットフォームなどによって異なり、永続的な値ではありません。 Remarks - Object.GetHashCode Method (System) | MSDN Remarks - String.GetHashCode Method (System) | MSDN
c# - Generate hash of object consistently - Stack Overflow
ハッシュ アルゴリズムを実装するクラスの基本クラスです。
public byte[] ComputeHash( byte[] buffer )HashAlgorithm.ComputeHash メソッド (Byte[]) (System.Security.Cryptography) | MSDN
byte[] buffer = new byte[1000 * 1000 * 500]; // 500[MB] Random rand = new Random(0); rand.NextBytes(buffer); int b = buffer.GetHashCode(); // 1, 1[msec] … 2回の試行の実行時間 byte[] m1 = MD5.Create().ComputeHash(buffer); // 1086, 1112 byte[] m2 = new MD5Cng().ComputeHash(buffer); // 1305, 1287 byte[] m3 = new MD5CryptoServiceProvider().ComputeHash(buffer); // 1080, 1085 byte[] r1 = RIPEMD160.Create().ComputeHash(buffer); // 6556, 6543 byte[] r2 = new RIPEMD160Managed().ComputeHash(buffer); // 6588, 6574 byte[] s1 = SHA1.Create().ComputeHash(buffer); // 1578, 1611 byte[] s2 = new SHA1Cng().ComputeHash(buffer); // 1797, 1804 byte[] s3 = new SHA1CryptoServiceProvider().ComputeHash(buffer); // 1598, 1587 byte[] s4 = new SHA1Managed().ComputeHash(buffer); // 3256, 3179 byte[] ss1 = SHA256.Create().ComputeHash(buffer); // 5878, 6071 byte[] ss2 = new SHA256Cng().ComputeHash(buffer); // 3358, 3374 byte[] ss3 = new SHA256CryptoServiceProvider().ComputeHash(buffer); // 3386, 3407 byte[] ss4 = new SHA256Managed().ComputeHash(buffer); // 6243, 6151
MD5ハッシュ アルゴリズムの実装を表す抽象クラスです。
MD5とSHA1は衝突の問題 (collision problems) によりSHA256やSHA512を使用することが推奨されており、MD5は互換性のために残されています。Remarks - MD5 Class (System.Security.Cryptography) | Microsoft Learn
using (HashAlgorithm algorithm = MD5.Create()) { string input = "Hello World!"; byte[] hashCode = algorithm.ComputeHash(Encoding.UTF8.GetBytes(input)); // 237, 7, 98, 135, 83, 46, 134, 54, 94, 132, 30, 146, 191, 197, 13, 140 // ハッシュ コードを16進の文字列へ変換 string hash = BitConverter.ToString(hashCode).Replace("-", ""); // ED076287532E86365E841E92BFC50D8C }MD5 クラス (System.Security.Cryptography) | Microsoft Learn
インスタンスはMD5.Create()により作成でき、このとき指定可能な次の値です。Create(String) - MD5.Create メソッド (System.Security.Cryptography) | Microsoft Learn
これを省略すると"System.Security.Cryptography.MD5"が指定されます。Create - md5.cs
ファイルのハッシュを求めるには、次のようにストリームを受け取るオーバーロードを用います。
using (HashAlgorithm algorithm = MD5.Create()) using (FileStream fs = new FileStream(path, FileMode.Open)) { byte[] hashCode = algorithm.ComputeHash(fs); }
using System.Data.HashFunction; xxHash xxHash32 = new xxHash(32); // ハッシュサイズ:32bit byte[] result32 = xxHash32.ComputeHash(data); xxHash xxHash64 = new xxHash(64); // ハッシュサイズ:64bit byte[] result64 = xxHash64.ComputeHash(data)