ホームページ >バックエンド開発 >PHPチュートリアル >パスワードとソルトの原則の詳細な分析_PHP チュートリアル

パスワードとソルトの原則の詳細な分析_PHP チュートリアル

WBOY
WBOYオリジナル
2016-07-21 15:08:43842ブラウズ

パスワードが直接ハッシュされている場合、ハッカーはパスワードのハッシュ値を取得し、ハッシュ値辞書 (MD5 パスワード クラッキング Web サイトなど) を参照してユーザーのパスワードを取得できることがわかっています。

塩を加えればこの問題はある程度解決できます。いわゆる塩を加える方法は、「調味料」を追加することです。基本的な考え方は次のとおりです。ユーザーが初めてパスワードを入力するとき (通常は登録時)、システムは自動的にパスワードに「スパイス」を加えてハッシュ化します。ユーザーがログインすると、システムはユーザーが提供したコードに同じ「スパイス」を振りかけてハッシュ化し、ハッシュ値を比較してパスワードが正しいかどうかを判断します。

ここでの「ソース」は「ソルト値」と呼ばれ、この値はシステムによってランダムに生成され、システムだけがそれを知っています。このように、2 人のユーザーが同じパスワードを使用した場合でも、システムによって生成されたソルト値がユーザーごとに異なるため、ハッシュ値は異なります。ハッカーが自分のパスワードと自己生成したハッシュ値を使用して特定のパスワードを持つユーザーを見つけたとしても、その可能性は非常に低いです (パスワードとソルト値はハッカーが使用したものと同じである必要があります)。

以下では、PHPを例にmd5($pass.$salt)暗号化関数を説明します。

コードをコピー コードは次のとおりです:

function hash($a) {
$salt=”Random_KUGBJVY” //ソルト値、によって指定されるランダムな文字列を定義します。プログラマー
$b=$a.$salt; // パスワードと Salt を連結します
$b=md5($b); // MD5 ハッシュを実行します
return $b; // ハッシュを返します
}
?>

メソッドの呼び出し: $new_password=hash($_POST[password]); //ここでフォーム送信値が受け入れられ、暗号化されます

以下は、Salt ハッシュを追加するプロセスの詳細な紹介です。紹介する前に 1 つ強調しておきます。前述したように、パスワードを検証するときに使用されるソースは、そもそもパスワードをハッシュするときに使用されます。したがって、Salt 値はデータベースに保存する必要があります。

ユーザーが登録するとき、

ユーザーは[アカウント]と[パスワード](およびその他のユーザー情報)を入力し、システムはユーザーの[ソルト値]を生成します。 ] を一緒に接続し、結果の値をハッシュして [ハッシュ値 1] と [ソルト値] をデータベースに格納します。
ユーザーがログインすると、

ユーザーは[アカウント]と[パスワード]を入力します。システムはユーザー名から対応する[ハッシュ値]と[ソルト値]を見つけ、[ソルト値]と[パスワード]を結び付けます。ユーザーが入力した値を結合し、[ハッシュ値 2] を取得します (値はすぐに計算されることに注意してください)。[ハッシュ値 1] と [ハッシュ値 2] が等しいかどうかを確認します。それらが等しい場合はパスワードが正しいことを意味し、そうでない場合はパスワードが間違っていることを示します。
場合によっては、開発プレッシャーを軽減するために、プログラマは各ユーザーのプライベート ソルト値を生成する代わりに、統一されたソルト値 (どこかに保存されている) を使用します。

www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/327416.html技術記事パスワードが直接ハッシュされている場合、ハッカーはパスワードのハッシュ値を取得し、ハッシュ値辞書 (MD5 パスワード クラッキング Web サイトなど) を調べて特定の情報を取得できることがわかっています。
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。