2016-07-07 14 views
0

同じ入力の同じ繰り返し回数のハッシュ出力は常に同じ結果をもたらすと私は考えると思います。異なる入力からの同じ繰り返し回数の2つのハッシュ出力は常に異なるのですか?

2つの異なる入力を考えてみましょう。

static byte[] hash(byte[] bytes, final int count) 
    throws NoSuchAlgorithmException { 
    final MessageDigest digest = MessageDigest.getInstance("SHA-256"); 
    for (int i = 0; i < count; i++) { 
     bytes = digest.digest(bytes); 
    } 
    return bytes; 
} 

2つの異なる入力では、同じカウントで2つの出力が常に異なるのですか?

byte[] john = digest("john".getBytes(), 1024); 
byte[] jane = digest("jane".getBytes(), 1024); 

私はBINARY(32)としての私のデータベースのユーザー名列を定義することを計画していると私は私がUNIQUEかいない列を設定する必要があるだろうか。

答えて

1

ダイジェストのサイズを超える長さの入力に対して、最終的にすべてのハッシュが明らかに衝突します。さらに、ダイジェストのサイズに近い入力に対しても、不足を保証しようとする試みはほとんどありません。典型的な、ペタニックな、または同様のインプットの場合には、はしばしばが発生する -

ハッシュ

(たとえば、CRCは1ビットで変化する入力に対して明確なハッシュを持つことが保証されていますが、安全なハッシュではそれを提供できません)

関連する問題