2

皆さんに簡単な質問があります:

私は PHP をいじっています (私は比較的経験が浅いです)、自分のサイトで使用する安全なパスワード ハッシュ システムの開発に興味があります。crypt()SO に関する他の記事や質問を通じて、BSD のbcryptハッシュ アルゴリズムの実装にはPHP の関数を使用する必要があると推測しました。

あなたへの私の質問は、関数に初期化ベクトルまたはパスワードを入力すると、base64 ではない入力がハッシュとして「0」を返すように見えるという事実に関するものです。この問題を回避するために私が実装したものは次のとおりです。

$salt = base64_encode(mcrypt_create_iv(16, MCRYPT_DEV_URANDOM));

$password = base64_encode($password);

このようにエンコーディングを変更すると、衝突やセキュリティの低下の危険性はありますか?

私の考えは、ハッシュ関数が空のハッシュを返すことを心配することなく、ユーザーがパスワードに任意の範囲の文字を使用できるようにしたいということでした (適切なパスワード ポリシーを適用します)。

これを行うためのよりシンプルまたはエレガントな方法はありますか? おそらく、ソルトとパスワードをあまり制限しないハッシュ関数を使用する必要がありますか?

あなたが私に与えることができる助けを前もって感謝します。

4

2 に答える 2

1

base64 でエンコードしても、1 対 1 の変換であるため、衝突の可能性は高くなりません。パスワードの干し草の山はまったく減りません。

于 2012-07-23T05:31:54.693 に答える
0

PHP でハッシュ化するには、ハッシュ関数を使用することをお勧めします。使用するにはアルゴリズムが必要なので、sha などを介してスローできます。

衝突に関しては、私は心配しません。衝突の影響を受ける可能性はほとんどありません。

于 2012-07-23T05:38:03.877 に答える