.NETには暗号ハッシュを作成するハッシュサムプロバイダがたくさんあります。これらのハッシュプロバイダは、(ほとんどの目的で衝突防止のために)一意であるという条件を満たします。彼らはすべて非常にであり、あなたが1兆回以上それをやっていない限り、ハッシュは間違いなくアプリケーションのボトルネックにはなりません。
個人的に私は、SHA1が好き:
string hash;
using(SHA1CryptoServiceProvider sha1 = new SHA1CryptoServiceProvider())
{
hash = Convert.ToBase64String(sha1.ComputeHash(byteArray));
}
の人が一つの方法は、他よりも遅くなる場合がありますと言っても、それはすべての相対的な用語であります。画像を扱うプログラムは、ハッシュサムを生成するマイクロ秒プロセスに気付かないでしょう。
衝突については、ほとんどの場合、これも無関係です。 MD5のような「時代遅れの」方法さえも、ほとんどの状況で非常に有用です。システムのセキュリティがの場合は、衝突を防止するためにに依存している場合にのみ使用することをお勧めします。
Rex I ' @AdamRobinsonが指摘しているように、SHA1などの.NET暗号化ハッシュを含むハッシュは一意性を保証できません;ハッシュが多対1のマッピングである限り、ハ可能な入力よりshcodes。 – Spike0xff
@ Spike0xffソフトウェアでは、「一意」と言うとき、「十分にユニーク」を意味すると理解されています。私は、このスレッドの誰かがそれについて混乱しているという兆候は見ません。 –
私の懸念事項は投稿する人だけではなく、誰でも読んでいることです。混乱していると必ず表示されるとは思いません。そして、私はそれが辞書の定義ではなく、それが私がそれを意味するかそれを理解する方法でもないので、あなたが「それが意味すると理解されることを願っています。たぶんあなたは評判の良い情報源を挙げることができますか? – Spike0xff