2017-08-22 6 views
0

パスワードを保存する方法は$2a$15BCRYPTで始まります。 BCRYPT

ただし、パスワードをBCRYPTとして保存すると、出力は$2y$15になりますが、$2a$15としてください。私はBCRYPTに新しいです、そして、私はそれを理解するのが非常に難しいと感じます。

function encryptedPassword($strPassword) { 
    $strSHA256 = hash('sha256', $strPassword); 
    $strBcrypt = password_hash($strSHA256, PASSWORD_BCRYPT, array('cost' => 15, 'salt' => bin2hex(openssl_random_pseudo_bytes(12)))); 
    return $strBcrypt; 
} 

だから、私のパスワードがHello123!であれば言う:

はとにかく、ここに私のBCRYPTコードです。

$2y$15$aa979703a103b0a45b2afO0KS15RjWu5Lc8sa4.xQlsw9QLtyhp/O 

と私はそれになりたい:それの出力は以下のようになり

$2a$15$aa979703a103b0a45b2afO0KS15RjWu5Lc8sa4.xQlsw9QLtyhp/O 

私は、これは塩をどうするかどうかを知りませんが、誰かが私を助けることができますか?

+4

1.なぜあなたは '$ 2a $'として具体的にそれを望んでいますか? 2.なぜbcryptの前にパスワードをSHA256でハッシュしていますか?なぜあなたは自分の塩を作りますか? – deceze

+2

4.なぜ 'password_hash()'とそのコンパニオン 'password_verify()'を使用していませんか? –

+2

5.パスワードをハッシュする*ときに、その関数が "encryptedPassword"と呼ばれるのはなぜですか? – deceze

答えて

2

PHPマニュアルから:

PASSWORD_BCRYPT - ハッシュを作成するためにCRYPT_BLOWFISHアルゴリズムを使用してください。 これは、 "$ 2y $" という識別子を使用して標準のcrypt()互換ハッシュを生成します。結果は常に60文字の文字列、失敗した場合はFALSE になります。

したがって、BCRYPTを使用すると常に$ 2y $が生成されます。ちなみに、ハッシュの最初の部分は単なる識別子であり、password_verifyで後でパスワードをテストするために使用されます。あなたのケースで$ 15 $がハッシュアルゴリズムのコストであるのと同じように...

PHPパスワードハッシングについてもっとお読みになることをお勧めします。ハッシュをXまたはYで絶対に始めることを望んでいる理由は絶対にありません。

PHPの人々は、あなたに安全なパスワードハッシュ関数を与えることに大きな努力を払っています。あなたは本当にそれらの周りのものをハッキングせずにそれらを使用して試す必要があります。ハッシュをハッシュすることは、一度ハッシングするだけでは安全ではありません。 saltオプションはPHP7で廃止されました。私はそれを取り除くことを提案します.PHPはあなたよりも優れた処理をすることができます。

+0

申し訳ありませんが、この情報をありがとうございます。私はそれについての質問をする前に何かについてもう少し研究をする必要があると思う。 – ChrisBoyd

関連する問題