2

LaravelのHash::make()メソッド(つまりbcrypt)を使用する場合:

  • シークレットの最大入力長はありますか?
  • この長さを超えるとどうなりますか?
  • 戻り値は常に同じ長さですか?

ユーザー登録フォームのパスワードフィールドを最大長に対して検証する必要があるかどうかを知りたいのですが。フォームは次のように処理されます。

public function action_register()
{
    $rules = array(
        'username' => 'required',
        'password' => 'required|min:10'
    );

    $validation = Validator::make(Input::all(), $rules);

    if($validation->passes())
    {
        $user = new User;
        $user->name = Input::get('name');
        $user->password = Input::get('password');
        $user->save();
        //todo - report success
    }
    else
    {
        //todo - report errors
    }
}
4

2 に答える 2

4

ハッシュは固定 (または少なくとも最大) の長さです。

厳密に言えば、bcrypt のパスワードの長さには上限がありますが、それを超えても何も起こりません。55 文字 (質問者によっては 72 文字) です。

前述のように、パスワードの長さを制限するのは悪い習慣ですが、実際には、パスワードを 1024 文字程度に切り詰めて、誰もサーバーで馬鹿げたことをしないようにすることをお勧めします。

于 2013-04-25T10:41:32.063 に答える
2

ハッシュ アルゴリズムは、任意の長さ (または型 - 文字列である必要さえありません) の変数を受け取ることができ、その変数の計算された "ハッシュ" を出力します。

パスワードとは別に、ハッシュのもう 1 つの一般的な用途は、ダウンロード可能なファイルの検証キーを提供することです。つまり、「ここにダウンロード リンクがあり、ここにファイルのハッシュ値があるので、受け取ったコピーが改ざんされていないことを証明できます。と"。これは、CD や DVD イメージのような大きなファイルによく使用されるため、入力の長さに制限はありません。

したがって、短い答えはノーです。パスワード フィールドの最大長は必要ありません。

(実際、ハッカーは、パスワードの最大長を指定しているサイトを探します。これは、パスワードをハッシュしておらず、攻撃に対して脆弱であることを意味すると想定しています)

あなたの質問の他の部分に答えるには:はい、毎回同じハッシュアルゴリズムを使用すると仮定すると、計算されたハッシュ値は常に同じ長さです。

于 2013-01-15T14:12:12.713 に答える