文字列の整数ハッシュコードを生成したいが、これは永遠に続く。つまり、同じ文字列は常に同じハッシュコードになるはずです。文字列の永続ハッシュコード
ハッシュは暗号で安全である必要はなく、パスワードや機密データには使用されません。
最初の試みは.net framework string.GetHashCode()関数を使用することでした。
// We want to ensure we can change our hash function daily. // This is perfectly fine as long as you don't persist the // value from GetHashCode to disk or count on String A // hashing before string B. Those are bugs in your code. hash1 ^= ThisAssembly.DailyBuildNumber;
これはハッシュコードが一定ではないだろうことを示していると思われる: ただしソースを読めば、私は次のようcommmentを見つけました。
もしそうなら、フレームワークは繰り返し可能なハッシュコードを生成する別の方法を持っていますか?またはGetHashCodeのコードは、自分自身を実装するための合理的な出発点ですか?
私は可能な限り軽量で速いものを探しています。
私はSystem.Security.Cryptography.MD5を見つけましたが、単純なint32ハッシュコードではそれが過剰ですが、オーバーヘッドが心配です。少なくとも、文字列からバイト配列、バイト配列からintへの変換、および各ハッシュの新しいMD5()
オブジェクトの作成、またはいくつかの静的共有MD5オブジェクト()の管理が必要です。
"文字列ハッシュコードアルゴリズム"の場合は、良い結果が得られます。誰かがコードをコピーしてここに投稿する必要はありません。 – usr
ハッシュコードを生成するための未知の品質のコードサンプルは必要ありません。これは、あらゆるフレームワークの根本的な必要性のように思えるので、私は.netフレームワークメソッドまたはメソッドの組み合わせを探しています。私はstring.GetHashCodeが明らかにこの目的には役に立たないと驚いていました。私は適切な選択肢を見つけることができませんでした。さらに、この機能がフレームワーク内に隠れている場所や、存在しない場所を示す、私と同様に他の人たちにも答えが役立つと期待しています。 – HugoRune
最終的に良い結果を得た検索用語は、 ".net stable string hash code"でした。 – usr