2つのランダムな文字列をハッシュすると、100,000回のうち平均2回の衝突が発生します。これは期待されていますか?
これらの文字列はすべて、同じハッシュを生成します(任意のソルトと任意の作業要素を使用)。
base64_decode('/g=');
base64_decode('/gB/==');
base64_decode('/gBQyVY/0dzg');
base64_decode('/gBQyoK71jVY/JZP0dzg=');
base64_decode('/gBQyoK71jVY/J2ea4q9mAZP0dzg==');
base64_decode('/gBQyoK71jVY/J7QuBNJuFdxyf2eTBCs42chkx6ZvpJYszpUcJk8/HXa4q9mAZP0dzg=');
これらは単なる例です。中央から文字を追加および削除してみてください。さらに多くの一致が得られます。それらを見つけるために使用されるphpコードは次のとおりです。
set_time_limit(60*10);
$salt = '$2a$04$usesomesillystringforsalt$';
for($i=0; $i < 100000; $i++){
$one = openssl_random_pseudo_bytes(rand(1,111));
$two = openssl_random_pseudo_bytes(rand(1,111));
if(crypt($one, $salt)==crypt($two, $salt)){
echo base64_encode($one).'|'.base64_encode($two)."\n";
}
}