ELFHash で同じハッシュ値を生成する、アルファベット文字のみで構成される 2 つの文字列の例を挙げられる人はいますか?
コードをテストするにはこれらが必要です。しかし、簡単に生産できるものではないようです。そして驚いたことに、インターネット上にはさまざまなハッシュ関数のサンプルコードがたくさんありますが、衝突した文字列の例を提供しているものはありません。
必要な場合に備えて、以下に ELF ハッシュを示します。
unsigned int ELFHash(const std::string& str)
{
unsigned int hash = 0;
unsigned int x = 0;
for(std::size_t i = 0; i < str.length(); i++)
{
hash = (hash << 4) + str[i];
if((x = hash & 0xF0000000L) != 0)
{
hash ^= (x >> 24);
hash &= ~x;
}
}
return (hash & 0x7FFFFFFF);
}