2016-05-30 13 views
2

私は強力なハッシングアルゴリズムを「作成」しようとしていますが、今はそれがどれほど強いのでしょうか?PHP - このハッシュはどれくらい安全ですか?

これは私が思い付いたものである:(8ランダムな文字列+ hashname)だから私はハッシュ()関数内の各ハッシュを取っている、と私は塩で何度も何度もそれをハッシュ

function bHash($text, $salt) 
{ 
    foreach (array_reverse(hash_algos()) as $hash) { 
    $hash .= hash($hash, $text . $hash . $salt); 
    } 

    return "_bH/" . $salt . "/" . str_replace("/", "+", crypt($hash, $salt)); 
} 

echo bHash($password, "KB8NtFIN"); // I am using a different salt for each password! 

「ハロー」とは、例えば、その結果

は次のとおりです。だから、_bH/KB8NtFIN/KBumi3+cVUUtU

、これはどのように安全/強いのですか?

+5

ちょうど1つの質問:なぜあなたはこれをやっていますか? – Naruto

+0

@Naruto私はちょうどbCryptのようなすでに強いものを使わずにパスワードを保存することができるのだろうかと疑問に思っている。 – wtm

+8

これは実際には非常に複雑な質問で、多くの人が徹底的に、あなたがこれを地獄のためにやっているなら、あなたはそれを生産に使うつもりならば、あなたには良いことです。しかし、もしあなたが自分のことを書いてはいけないということに関心がある人は、こちらをご覧ください(http://security.stackexchange.com/questions/18197/why-shouldnt-weroll-our-own )。 – Andrew

答えて

4

PHP - このハッシュはどのくらい安全ですか?

短い回答:あまりありません。

短い答え:これは、PGPやvarios bCryptの実装などの業界標準と比較してあまり強力ではありません。

答え:in this Security StackExchange Postが提供する回答を取り除きたくはありませんが、このリンクを読んで、自分のハッシュアルゴリズムの数々の落とし穴に関する非常に詳細な解答をお読みください。

  • 難読化は、あなたが、それは誰もができることを意味しません読み取ることができないという理由だけで、ないハッシュです。

  • ここに記載されているように、Schneiers Lawは関連する問題です。

  • 塩を毎回交換すれば、塩をまったく持っていない点は何ですか?塩は、アルゴリズムによって認識可能である必要があります。非常に簡単な例を取ってください。a = b + cという代数があります。 aの値を見つけるために使用できる最小数式は、未知の変数の数です。したがって、このケース2(bの場合は1つ、cの場合)は、hash = salt + passwordが1つの方程式(ハッシュ)しか持たない場合はハッシュ内の塩とパスワードの両方の値を見つけることができません。 ..

  • 塩に/文字が含まれている場合はどうなりますか?パスワードに/文字が含まれている場合はどうなりますか?

P.s>またIRCMaxwellsへのリンクはJimLによって掲示ものはあまりにも読んでも価値があります。

関連する問題