1

アプリケーションのログインウィンドウを作成しようとしています.Webを見てみると、JPasswordField.getText()は非推奨であることがわかりました.そのメソッドを使用すると、パスワード文字列が文字列プールに挿入され、明らかにクールではありません. そのため、代わりに char の配列を返す JPasswordField.getPassword() を使用したいと思います。今私の問題に。私のパスワードはデータベースのテーブルにあります . rs.getString() を実行することで、実際にはまだパスワードを String プールに入れています. resultSet から char の配列を取得する方法はありますか?実際のパスワードを取得して比較できるようにするために使用するアイデアはありますか?

-ありがとう。

4

2 に答える 2

2

ソルト化されハッシュ化されたパスワードをデータベースに保存し、ハッシュ化されたパスワードを文字列プールに入れることを心配しません。ハッシュを比較します。

于 2013-09-24T21:04:17.333 に答える
1

データベースには、ユーザー名ごとにsalthashの 2 つを保存する必要があります。

ソルトは、ユーザーが入力するパスワードに追加するランダムに生成された迷惑メールの文字列である必要があります。ハッシュは、ソルトが追加されたパスワードのハッシュ (sha256 またはそれより強力な方が望ましい - MD5 は使用しないでください!) である必要があります。

例:

salt: dbIL%#JBD"ncON$SOcl)=?NJ!A
pass: helloworld123
string to hash: helloworld123dbIL%#JBD"ncON$SOcl)=?NJ!A
sha256 hash of the above string: 0bf4e6a0d9fb5c7f1f6becb107af068684b6373ed1489663c335bb87280403d9

次に、ユーザーが正しいパスワードを入力したかどうかを確認する場合は、データベースからソルトを取得し、ソルトを追加して入力したパスワードをハッシュし (例に示すように)、このハッシュをデータベースに保存されているハッシュと比較します。それらが一致する場合、ユーザーは正しいパスワードを入力しました。

于 2013-09-24T21:17:10.923 に答える