2019年09月26日
川俣晶の縁側ソフトウェア技術雑記 total 3451 count

同じ文字列に対するGetHashCodeの結果が一定しない

Written By: 川俣 晶連絡先

問題 §

 .NET Core環境下で同じ文字列に対するGetHashCodeの結果が実行するごとに異なる。

 デフォルトの.NET Framework環境下では同じ数値が戻ってくる。(が、設定では同じように変化する可能性がある模様)

原因 §

 仕様。

 (RandomizedStringHashAlgorithmによってセキュリティ的な安全性が向上すると主張しているようだが非互換変更である)

解決 §

  1. もし、.NET Frameworkアプリの場合、app.config内に<UseRandomizedStringHashAlgorithm>要素があればこの設定を変更して RandomizedStringHashAlgorithmをオフにする
  2. .NET Coreは使用しない。.NET Frameworkを使う (そして、RandomizedStringHashAlgorithmはオンにしない。デフォルトではオフである)
  3. システムが提供するGetHashCodeが使わないで相当品を書いてそれを使う (それで済む場合に限る)
  4. 呪いの藁人形にRandomizedStringHashAlgorithmと書いた紙を貼って釘を打つ (ただし、結果は保証されない)