0

PHPでこれを見たことはありませんfatal error... githubでパスワードハッシュクラスを見つけたときに始まりました:

 $Config = array(
        "Depreciated" => 1,
        "Notices" => 1,
        "Errors" => 1,
        "Warnings" => 1,
    );
    $Salt_Settings= 1;
    $Password_Hashing = new SlayerSolutions\Authentication($Salt_Settings,$Config);

$Password_Hashing ->SetSalt("f4dd32"); 
$Password_Hashing ->SetKey("Login"); 
$Password_Hashing ->SetPositioning(0); 

$Password_Entities = $Password_Hashing ->Password_Props($_POST['Password']);
$Result_Array = $Password_Hashing ->Hash_Password($Password_Entities );

これは以下を返します:

致命的なエラー: ハッシュ関数の使用法が正しくありません。これは、ステップ手順で実行する必要があります。

イオンキューブか何かでエンコードされているようで、クラスの実際のコード構造を表示できません

4

1 に答える 1

3

あなたのエラーは、これを行っていないことに起因します:

 $Formatted_Password = $FrameWork->Format_Password($Password_Entities);

実質的にどちらが設定されます$this->Props_Called = 1;。まったく無意味なたわごと。

これを使用すべきではない理由:

最初の OMGWTFBBQ の瞬間:

else{
        $length = mt_rand(0,25);
        $characters = '0123456789abcdefghijklmnopqrstuvwxyz';
        $string = '';

        for ($p = 0; $p < $length; $p++) {
            $string .= $characters[mt_rand(5, strlen($characters) -1)];
        }
        $this->Salt = $string; // Set Salt Randomly Generated
 }

このコードは、ランダムなソルトを生成します。ASCII の 255 バイト以上の完全な範囲を利用する代わりに、男は自分自身を 36 に制限しています。エントロピーに 255^N を持つ代わりに、36^N を持っています。それは大きな損失です。

2 番目の WTF モーメント:

if ($this->Positioning == 0){
            $Return_Array['SaltedPassword'] = $Password_Props['Password'].$Password_Props['Salt'];
        }
        if ($this->Positioning == 1){
            $Return_Array['SaltedPassword'] = $Password_Props['Salt'].$Password_Props['Password'];

HMACの要点は、メッセージではなくキーをソルトすることです。これには非常に重要な理由があります。それは、HMAC ハッシュの仕組みによるものです。ソルトはキーで「ダブルディップ」しますが、値にある場合はそうではありません。

(記録のために: HMAC-ALGO = ALGO( (key XOR pad1) CONCAT ALGO( (key XOR pad2) CONCAT value)))

これは大きな問題です。繰り返しになりますが、これを行うことでかなりの損失を被っています。たった今; ソルトが値に含まれている場合、アルゴリズムは ALGO(key ALGO(value)) と同等であり、ALGO(value . key) に勝るものはありません。

この点の参照はこちら: https://stackoverflow.com/a/7273257/2167834

于 2013-05-17T14:57:26.680 に答える