2

ログインフォームを作成していますが、パスワードの大文字と小文字を区別したいと考えています。次のコードを書きました。where句を使用して大文字と小文字を区別するにはどうすればよいですか。

PreparedStatement stm = con.prepareStatement(" select * from user where userid =? and   password   =?" );

stm.setString(1, userid);
stm.setString(2, pswd);        
ResultSet rs =stm.executeQuery();
if (!rs.next()) {
    JOptionPane.showMessageDialog(this, "Invalid Id/Password");
}
4

3 に答える 3

4

パスワードは (少なくとも!) のような関数でハッシュ化する必要がありますsha1Sha1異なる大文字に対してまったく別の値を返します。

大文字と小文字を区別しない結果が得られた場合は、おそらくそれをプレーン テキストで保存しているので、最初に変更する必要があります。

String  - sha1 value
example - c3499c2729730a7f807efb8676a92dcb6f8a3f8f  
Example - 0f01ed56a1e32a05e5ef96e4d779f34784af9a96  
eXample - decb1226835e95f0441ec4ee0ecd9283796a9cfb

DB 列をutf8_general* ではなく * に変更することもできますutf8_general_ci。ci は CaseInsentative を意味します。しかし、あなたは本当にこの方法をやりたくない
* utf8を使用すると仮定


Java で利用できる関数はわかりませんが、原則は変わりません。Javaを使用してパスワードを保存する方法について調査することをお勧めします:)

于 2013-08-01T09:14:33.460 に答える
2

パスワードを平文で保存するのはよくありません。少なくとも md5 ハッシュを使用してください。

于 2013-08-01T09:14:34.667 に答える