0

暗号化には使用されませんが、標準よりも優れたカバレッジを提供するクイック ハッシュ アルゴリズムを探していますGetHashCode()

CityHashましたが、C# ポートが表示されません。

理想的には、ハッシュ サイズ (64 ビット、128 ビットなど) を指定したいのですが、これは必須ではありません。

何か案は?

4

2 に答える 2

1

シティハッシュ C# ポート

https://github.com/gmarz/CityHash

使用法:

using CityHash;

ulong hash = "...".GetCityHash64();

メイン プロジェクトから CityHash.dll への参照を追加し、プロジェクトの C++ 部分からビルドされた CityHash.Win32.dll がプロジェクトの bin フォルダーで使用できるようにする必要があります。

私にとって、git を使用することは大きな迷惑です。bin フォルダーに何かをチェックインする必要はありません。そのため、Win32 dll を lib フォルダーに置き、このビルド前イベントを追加しました。

start /MIN xcopy /y /c lib\CityHash.Win32.dll bin

これにより、.gitignore リストから bin フォルダーを削除することなく、誰かが新たにクローン作成およびビルドした場合でも、コピーが確実に行われます。

また、私が知る限り、CityHash の C++ 部分は Visual Studio のリリース モードではビルドされないことに注意してください - デバッグのみ。

于 2013-10-31T06:19:26.497 に答える
-2

次のようなものを試すことができます: 64 ビット ハッシュの場合

bit Data[64*L] ; // Your input filled to be divided by 64 
bit Arr[64] ;    // eg. initially filled with '0' 
for(int k=0 ; k<L ; k++){
    for(int i=0 ; i<64 ; i++){
        Arr[i]=Arr[i]^data[k*64+i];  // '^' as the XOR operator
    }
}

Arr[] は、64 ビットの高速で効率的なハッシュを取得します。

于 2012-05-28T14:49:37.273 に答える