質問

使いたいです ポータブルPHPパスワードハッシュフレームワーク ハッシュパスワードに。しかし、そのデモはパスワードをハッシュするために塩を使用しないことがわかります。しかし、それはパスワードをチェックするためにダミー塩を使用しています。

$dummy_salt = '$2a$08$1234567890123456789012';

if (isset($dummy_salt) && strlen($hash) < 20)
        $hash = $dummy_salt;

独自の塩を生成してデータベースに各ユーザーに保存できるコンベンションメソッドを使用したい場合、ポータブルPHPパスワードハッシュフレームワークを使用して塩を生成するにはどうすればよいですか?

これは私がハッシュパスワードに使用する機能ですが、SHA512にはSHA1と同じ問題があると言われています。

function hash_sha512($phrase,&$salt = null)
{
    //$pepper = '!@#$%^&*()_+=-{}][;";/?<>.,';

    if ($salt == '')
    {
        $salt = substr(hash('sha512',uniqid(rand(), true).PEPPER_KEY.microtime()), 0, SALT_LENGTH);
    }
    else
    {
        $salt = substr($salt, 0, SALT_LENGTH);
    }

    return hash('sha512',$salt.PEPPER_KEY.$phrase);
}

あなたが何かアイデアがあるかどうか教えてください。ありがとう。

役に立ちましたか?

解決

から phpassの記事 そのページからリンク:

実際のハッシュに加えて、phPassは、新しいパスワードまたはパスフレーズがハッシュされている場合にランダム塩を透過的に生成し、ハッシュタイプ、塩、パスワードストレッチの反復をエンコードします。 PhPassが保存されたハッシュに対してパスワードまたはパスフレーズを認証すると、同様にハッシュタイプ識別子、塩、および反復が「ハッシュエンコード文字列」からカウントされるハッシュ型識別子、塩、および使用を使用します。 したがって、あなたは自分で塩漬けとストレッチを悩ませる必要はありません - phpassがあなたのためにこれらの世話をします.

...だから、例が塩漬けを使用しないことは驚くことではありません!あなたはあなたのコードを過度に味付けしているかもしれません。

ダミー塩を使用したコードサンプルは、ユーザーが存在するかどうかを確認することにより、タイミング攻撃を防ぐ方法の例です。ユーザー。ユーザーが存在しない場合、使用する塩が保管されていないため、ダミー塩が必要です。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top