ポータブルPHPパスワードハッシュフレームワークで塩を作成します
-
24-10-2019 - |
質問
使いたいです ポータブル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があなたのためにこれらの世話をします.
...だから、例が塩漬けを使用しないことは驚くことではありません!あなたはあなたのコードを過度に味付けしているかもしれません。
ダミー塩を使用したコードサンプルは、ユーザーが存在するかどうかを確認することにより、タイミング攻撃を防ぐ方法の例です。ユーザー。ユーザーが存在しない場合、使用する塩が保管されていないため、ダミー塩が必要です。