PHPの登録とパスワードの生成に関する質問

WBOY
リリース: 2016-09-05 08:59:53
オリジナル
1477 人が閲覧しました

通常、ユーザー テーブルを構築するときにソルト フィールドを追加し、パスワードを計算するときに、登録ページに入力されたパスワードとランダムに生成されたソルト値に基づいて MD5 暗号化が実行されるのはなぜですか?誰か詳しい説明をしてくれませんか?

返信内容:

通常、ユーザー テーブルを構築するときにソルト フィールドを追加し、パスワードを計算するときに、登録ページに入力されたパスワードとランダムに生成されたソルト値に基づいて MD5 暗号化が実行されるのはなぜですか?誰か詳しい説明をしてくれませんか?

MD5 で暗号化された弱いパスワードでも、ブルート フォースやレインボー テーブルによって解読される可能性があります。これにより、MD5 解読の難易度が高まり、セキュリティが向上します。

主に、データベースが盗まれた後にユーザーのパスワードを平文で直接取得することを避けるためです。

PHP パスワード ハッシュ セキュリティ
パスワード ハッシュ関連関数:
password_hash (推奨) crypt (blowfish) hash sha1 md5
ハッシュ関数は、sha512 などの複数のハッシュ アルゴリズム hash_algos をサポートします。

PHP 5.5 は、ネイティブ パスワード ハッシュ API (password_hash/password_verify) を提供します。

パスワード ハッシュと検証を完了するための安全な方法を提供します。
PHP 5.3.7 以降のバージョンは、パスワード ハッシュ API 用の純粋な PHP ネイティブ互換性ライブラリを提供します。 PHP バージョンが、password_hash/password_verify をサポートしていない場合は、代わりに crypt 実装を使用してください。
パスワード検証に crypt() 関数を使用する場合は、タイミング攻撃を避けるために、一定時間かかる文字列比較アルゴリズムを選択する必要があります。消費とは、文字列比較にかかる時間が一定であり、PHP の
== および === code> 演算子も、入力データの変更によっても変化しないことを意味します。 <code>strcmp() 関数は常に時間のかかる文字列比較を行うものですが、password_verify() を使用するとその作業を行うことができます
そのため、常にネイティブ パスワード ハッシュ API を使用することをお勧めします。可能です。

暗号化および復号化の分野における「ソルト」とは、ハッシュ処理中に追加される一部のデータを指します。=====操作符和strcmp()函数都不是耗时恒定的字符串比较,
但是password_verify()計算されたハッシュ値テーブル (「レインボー テーブル」と呼ばれます) からの出力データの比較を回避するために使用されます。
簡単に言うと、「ソルト」はハッシュ値を解読しにくくするために追加される少量のデータです。

計算されたハッシュ値とそれに対応する元の入力リストを提供できるオンライン サービスは数多くあります。データ量が非常に大きい

「salt」を追加することで、対応する平文をリストから直接見つけるリスクを回避できます
レインボーテーブルは、一般的に暗号化ハッシュ関数の逆演算用に事前に計算されたテーブルです。暗号化されたパスワード ハッシュを解読するために使用されます。

password_hash()関数はランダムに「salt」を生成します。
password_hash()またはcrypt()関数を使用すると、生成されたハッシュ値の一部として「salt」が返されます。
完全な戻り値を保存できます。この戻り値にはすでに十分な情報が含まれているため、データベースに直接送信されます。

パスワード検証のために、password_verify() または crypt() 関数で直接使用できます。


ソルトのもう 1 つの用途は、ユーザーを識別するための Cookie の作成に使用できることです。
たとえば、データベースに基づいてカスタマイズされた Cookie セッション メカニズムを実装するために使用できます。
この Cookie はユーザーを認証するだけでなく、偽造することもできません。ひび割れた。

リーリー


bcrypt を使用します。PHP 5.5.0 にはデフォルトのアルゴリズムがあります。
なぜMD5を返すのですか?

http://zhuanlan.zhihu.com/p/2...

関連ラベル:
php
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!