私はphpを使用していて、mysqlデータベースにパスワードを保存しようとしていました。ソルトハッシュまたはopenssl暗号化を使用する方が安全なのは何ですか。ユーザーごとにランダムに生成された一意のソルトハッシュを使用してソルトをデータベースに格納する場合、誰かがソルトを見つけて解読する方法はありますか?または、openssl_public_encrypt関数を使用して、公開鍵を使用してパスワードを暗号化する場合、ソルトハッシュを使用するよりも安全です。
一般に、ハッシュと暗号化は2つの異なる目的で使用されます。あなたの場合の主な違いは、ハッシュは一方向であり、暗号化は双方向であることです。つまり、パスワードを復号化してプレーンテキストで取得できますが、何かを「ハッシュ解除」することはできません。
システムが危険にさらされ、暗号化を使用している場合、攻撃者はおそらくすべてのパスワードを復号化するために必要なすべての情報を入手することになります。これは明らかに良くありません。パスワードをハッシュした場合、攻撃者がハッシュされたパスワードとシードにアクセスできたとしても、プレーンテキストのパスワードを取得することはできません。
このため、パスワードを暗号化するのではなく、ハッシュすることをお勧めします。もちろん、これはハッシュが正しく行われていることを前提としています。これを行うには、bcryptなどを調べてください。
Scrypt、bcrypt、またはPBKDF2を使用してパスワードをハッシュする必要があります。
このトピックに関して、このサイトにはたくさんのアドバイスがあります。 「パスワードハッシュ」を検索すると、それが見つかります。
例: パスワードを安全にハッシュする方法? 、 どのパスワードハッシュ方式を使用する必要がありますか? 、 最も安全なパスワードハッシュアルゴリズム? 、 パスワードの保存にbcryptを推奨するセキュリティ専門家はいますか? 。
データベースが危険にさらされた場合に、ユーザーのパスワードに対するオフラインの辞書攻撃を防ぐために、できる限り遅いパスワードハッシュアルゴリズムを使用したいと考えています。
サイトを検索すると、さらに多くのことがわかります。