2012-03-15 7 views
-1

私はWebプロジェクト用のPHP/MySQLログインシステムを開発中です。 Web上でのSOやたくさんの記事を調べた後、基本的なフレームワークを考え出し、いくつかのコードを書くことになりました。しかし、私はパスワードの暗号化に少し邪魔になる。phpログインシステム用の塩生成コードの展開と使用

アイブ氏を読み取る価値夜があることを発見した後:私は少なくともSHA1またはSHA2

  • を持つユーザーのパスワードは私もこれは私が助けを必要とするものである(ランダムに生成された塩を使用する必要があるはず

    • を暗号化する前にパスワードに追加してください。
    • ハッシュされたパスワードとランダムに生成された塩は、データベースに格納され、照会され、結合され、暗号化され、ユーザーのハッシュされたパスワードに対してチェックされます。

    私の問題は

  • +0

    SHA1/2/...は暗号化アルゴリズムではなく、ハッシングアルゴリズムです。ハッシュ値から元のパスワードを見つけることができないことを意味します。また、レインボーテーブルの攻撃を止め、セキュリティの習慣を守るために、ハッシュを一度だけハッシュしないでください。ハッシュを少なくとも100回以上ハッシュしてください。 – Darhuuk

    答えて

    0

    可能性:

    • 使用mt_rand() ASCIIコードを選択するためのループで、塩にchr()concatenateと対応する文字を取得します。

      これにより、任意の長さの塩を作ることができます。

    • は、利用可能な文字で文字列を定義し、それから、ランダムな位置を選択するループでmt_rand()を使用し、塩にsubstr()またはmb_substr()concatenateで選択した位置に文字を抽出します。

      これにより、選択した文字セットと長さの塩を作成することができます。

    • ランダムな文字列(例:uniqid())を生成し、オプションでハッシュする組み込み関数を使用します。

      これはすばやく簡単です。

    通常、2番目のオプションを使用します。

    0

    uniqid()、ランダムに塩を生成する際に来ていますか?私は考えることができる

    http://sg2.php.net/uniqid

    関連する問題