2016-08-08 10 views
1

パスワードハッシングに問題があります。Javaでハッシングする - >ハッシュと塩からパスワードを取得する

私はここに、この1のようなハッシュ関数を使用したい:この機能を

Hashing Java (OWASP)

私はそれらをデータベースに保存する前に、私はパスワードをハッシュすることができます。私のアプリケーションで

しかし

は、私は(メールサーバーなど)が、javacodeの内側に、私はではなく、プレーンテキストのパスワードとハッシュ化されていないパスワードが必要に異なるサーバーにログインするときに、パスワードを使用します。

これで、別のサーバーにログインするためにプレーンテキストのパスワードをもう一度抽出することができます(ハッシュ+ソルトはDBに格納され、ハッシュ関数/反復回数はわかっています)。

誰でもその方法を知っていますか?

EDIT(好ましくは、私は自分のパスワードをハッシュするリンクOWASPコードを使用することができる方法で):ここに行くための方法だろう暗号のように思えますが、暗号化はそれではないので、これは(受け入れ可能な解決であります安全)?とにかく私は高い反復回数と塩で行くだろう。

+1

できません。パスワードがハッシュされると元のパスワードを元に戻すことはできません。それはハッシュの全体の考えです!与えられた入力*がパスワードであるかどうかを確認できますが、それを再現することはできません。 *実際のパスワードが必要な場合は、代わりに暗号化する必要がありますが、ほとんどすべての種類のセキュリティ上の問題が発生するので、どちらかといえばそれも望んでいません。 –

+1

定義上、平文パスワードを抽出できる場合は、OWASP要件を満たしていません。ハッシングの全体のポイントはそれを防ぐことです。 – ruakh

+0

私はコード内にプレーンな形式でパスワードを必要としますが、データベースにパスワードを安全に保存するにはどうしたらいいですか? – Alkahna

答えて

3

ハッシュの目的はすべて元に戻すことができません。平文のパスワードを元に戻すことができれば、ハッシュの目的を破ってしまい、セキュリティの脆弱性にもなります。

0

パスワードをハッシュするポイントは、誰かがハッシュを手にしたときに、それを元に戻すことができないということです。これがこのセキュリティ対策の目的です。あなたが実際にやりたいことは、ユーザー入力を受け取り、同じアルゴリズムを使用してハッシュし、そのハッシュをデータベースに格納したものと比較することです。 Here's a great link explaining the process in detail

関連する問題