javaでユーザを認証するための関数を作成しました。私はSHA1
を暗号化されたデータに使用し、私はそれをMySQLに保存しました。その後、私はMySQLデータベースからデータを渡すためにパラメトリッククエリを作成しました。しかし、私はそのクエリラインにエラーがありました。私はSHA1
の値をデータベースに変更した後、私のクエリでSHA1
という単語を削除します。本当にそれは何の誤りもなく仕事です。しかし、私は取得し、SHA1
データベースからデータを暗号化して確認したい。データベースSHA1
を暗号化したデータをクエリに渡す方法。誰かが私の問題を解決するのを助けてください。ライン作業javaコードのmysqlデータベースでsha1ハッシュ値を取得する方法
public boolean authenticate(String username, String password){
Connection newConnection = null;
ResultSet newRst = null;
boolean flag = false; //return value which determines whether logged in or not
String SqlString = "SELECT * FROM user"
+ " WHERE username=? AND password=SHA1(?)"; //Error line when use SHA1()
String Username = username;
String Password = password;
String CheckUsername;
String CheckPassword;
List<String> ParametersDefined =
Arrays.asList(Username, Password);
List<String> ParametersNames = Arrays.asList("username", "password");
List<String> ParameterDataType =
Arrays.asList("String", "String");
DatabaseHandling newData = new DatabaseHandling();
try {
newConnection = newData.DataConnection();// creating the connection
newRst = newData.DataReadArg(newConnection, SqlString,
ParametersDefined, ParametersNames, ParameterDataType);
//check whether one row or more
int RowCount = 0; // to find the row count
while (newRst.next()) {
//checking whether we are getting right row
System.out.println("this is " + newRst.getString(2));
RowCount++;
}
//if the Row count is one then it check
if (RowCount == 1) {
newRst.first();
CheckUsername = newRst.getString("username");
CheckPassword = newRst.getString("password");
if ((username.equals(CheckUsername))
&& password.equals(CheckPassword)) {
userRoleId = newRst.getInt("userRoleId");
System.out.println("role = " + userRoleId);
flag = true;
}
}
} catch (Exception e) {
System.out.println("Error" + e.getMessage());
flag = false;
}
return flag;
}
...
String SqlString = "SELECT * FROM user" + " WHERE username=? AND password=?"; //Without SHA1 String. It's working without any errors.
sha1()を含むクエリを実行しようとすると、Plsは正確なエラーメッセージを共有します。 – Shadow
エラーメッセージは表示されませんでした。しかし、それは動作していないと私のシステムに行っていない。 –
次に、sha1()関数を使用してパスワードを保護しているとは限りません。 Btw、ハッシュ関数は何も暗号化しません。暗号化は元に戻すことができ、ハッシュは元に戻すことはできません。 – Shadow