-2

そのため、パスワードの暗号化に非常に興味があります。以下のスクリプトを作成しましたが、それがパスワードを検証/保護するための正当な方法であるかどうか、または単に何の役にも立たないかどうかを確認するためのフィードバックが必要でした. どんなフィードバックでも大歓迎です:

$pass = "Test!234";
$salt = crypt($pass);
$enc_pass = crypt($pass . $salt);

if(crypt($pass . $salt, $enc_pass) == $enc_pass){
echo "Success!";
}
else{
echo "Fail!";
}
4

2 に答える 2

1

ドキュメントを読んでください。

私はあなたの質問を却下しようとしているわけではありませんが、ここで質問に答えることは、単にドキュメントに記載されていることの繰り返しになります.

検索機能(右上)も使用する必要があります。crypt()ここに関連する機能について多くの質問があります。

関数に関してより鋭い質問がある場合は、crypt()先に進んでください。

于 2013-02-07T19:32:11.817 に答える
1

あなたのメカニズムは、暗号を使用するベストプラクティスに従っていません

PHP crypt には、salt を生成する特定の方法と、それ自体をさまざまなモードにする方法があります。実際に安全なアルゴリズムを取得するには、アルゴリズムがどのように指定されているかについて多くの詳細を知る必要があります。

使用するより良い方法はpassword_hash です。これにより、ハッシュアルゴリズムを簡単に指定できます。PASSWORD_BCRYPT、高コスト ファクター、およびランダムに生成されたソルトを必ず使用してください。

さらに、使用するアルゴリズムに関係なく、ユーザーごとに一意のランダム ソルトを使用する必要があります。パスワードをソルトとして使用すると、ソルトの値が失われます (攻撃者は簡単にレインボー テーブルを生成したり、そのスキームを使用して非常に簡単に逆ルックアップを実行したりできるため)。十分な長さ (128 ビットを超える) のランダムに生成されたソルトを使用すると、攻撃者は簡単にパスワード ハッシュをブルート フォースすることができず、ユーザーが同じパスワードを使用する場合でも、各パスワード ハッシュを個別にブルート フォースする必要があります。

于 2013-02-07T19:39:26.750 に答える