ハッシュ値をデータベースに保存しているが、ハッシュされる元の値の長さが固定されている場合 (例: 常に 4 文字)、ハッシュ関数の一方向の性質が損なわれますか?
より正確には、暗号化してデータベースに保存する機密性の高い文字列があります。これらの文字列を検索するために、データベース内のすべてのエントリを解読したくないので、文字列の最初の 4 文字のハッシュも別の列に保存します。データベースを検索したい場合、検索語の最初の 4 文字のハッシュを生成し、それを格納されたハッシュと比較して一致する、または一致する可能性のあるエントリを見つけ、それらのエントリを復号化して衝突をチェックし、残りを取得します。そのエントリに関連するデータ。
私の懸念は、攻撃者はハッシュされる文字列の長さが一定 (4 文字) であることを知っているため、考えられるすべての 4 文字の文字列とそれらのハッシュのテーブルを生成し、ハッシュ値を検索するだけでよいということです。データベースに保存されます(それにより、元の機密文字列の最初の 4 文字が失われます)。