2017-09-21 14 views
0

私はvb.netにアプリを持っており、私のデータベースにはPHPから理解できるパスワードを保存したい。vb.netのPHP verify_password()からパスワードを読み取り可能にする

$hash = password_hash("mypassword", PASSWORD_DEFAULT); 

結果は次のようになります:

$hash = '$2y$07$BCryptRequires22Chrcte/VlQH0piJtjXl.0t1XkA8pw9dMXTpOq'; 

とパスワードを検証するために、PHPのコードが

私が複製することができますどのように
if (password_verify('mypassword', $hash)) { 

    echo 'Password is valid!'; 

} else { 

    echo 'Invalid password.'; 

} 

likethisに見えるPHPでの作成は、このようなものですこのコード

$hash = password_hash("mypassword", PASSWORD_DEFAULT); 

iv VB.Net、結果は正確に一致しますか?

答えて

0

the php password_hash documentationによれば、この関数はハッシュアルゴリズムとしてBCryptまたはBlowfishを使用しています。前者を使っているようです。 BCrypt library available for .Net on Githubがあり、おそらくNuGetには他のオプションがあります。 phpと一致するように出力をフォーマットするには、それを試す必要があります。

さらに、ドキュメントには、password_hash()には、返されたハッシュの一部としてランダムに生成されたソルト値が埋め込まれていると記載されています。これがどのようにフォーマットされているか見るには、elsewhere in the documentationを参照する必要があります。これは、塩が第3の$の後ろの最初の22文字であり、実際のハッシュが残りの文字列で構成されていることを示しています。 3番目の$の前のすべてがアルゴリズムとコスト係数を示します。この段落のリンクから文書全体を読むことをお勧めします。

残っているのは、塩が元のパスワードとどのように結合されているかを知ることです。私はそれがパスワードの末尾に追加されていることを確認しましたが、これをあなた自身で検証したいと思うでしょう。最初の段落の最初のリンクの例#3も有用な情報を持っています。これは、phpが以下の結果を有効なsalt:mcrypt_create_iv(22, MCRYPT_DEV_URANDOM)として受け入れることを示しています。

関連する問題