我做了一个从我的数据库返回解密密码的方法但是我得到一个错误,表示表'密码'不存在或者aes_DECRYPT(用户名,密码)不存在。不知道为什么因为它以前有用过。
public String selectOldPassword(String username){
String oldPassword = "";
try{
stmt = connect.prepareStatement("SELECT AES_DECRYPT(password, username) FROM userdetails WHERE username = ?");
stmt.setString(1, username);
ResultSet passwordData = stmt.executeQuery();
if(passwordData.next()){
oldPassword = passwordData.getString("AES_DECRYPT(password,username)");
System.out.println(oldPassword);
}
stmt.close();
connect.close();
}catch(SQLException sql){
sql.printStackTrace();
}
return oldPassword;
}
答案 0 :(得分:1)
我会在select:
中使用别名stmt = connect.prepareStatement(“SELECT AES_DECRYPT(password,username)as decrypted_password FROM userdetails WHERE username =?”);
并从ResultSet中读取值。
oldPassword = passwordData.getString(“decrypted_password”);
老实说,我不知道JDBC是否允许列名如
AES_DECRYPT(密码,用户名)
我必须补充一点,我想不出从数据库解密密码的好理由。似乎是在向我索要安全漏洞。