さて、これがユースケースです。やや長い(200〜500文字)文字列がたくさんあるので、より小さな決定論的ハッシュを使用したいと思います。160ビットのSHA1値全体をわずか20バイトに格納できるため、文字列ごとに1桁のスペースの改善が得られます。
しかしもちろん、まともな雪崩効果のある暗号化ハッシュを使用した場合でも、文字列のハッシュとの衝突について心配する必要があります。チャンスは無限に小さいことは知っていますが、もっと保守的になりたいと思います。私がこのようなことをした場合:
hash(input)= CONCAT(HF1(input)、HF2(input))
ここで、HF1
は適切なロバストハッシュf()であり、HF2
は別の明確でロバストなハッシュf()です。これにより、衝突の可能性がほぼ不可能になりますか(20バイトではなく40バイトのコストで)?注:ユースケースでのSHA-1のセキュリティ/暗号化への影響については気にしません。
明確化:元の質問は、外部ハッシュ関数のハッシュ衝突確率を変更しないハッシュを連結するのではなく、連結されたハッシュ値をハッシュすることについて提起されました。