SQL返回解密密码

时间:2015-03-01 15:13:19

标签: java mysql sql encryption

我做了一个从我的数据库返回解密密码的方法但是我得到一个错误,表示表'密码'不存在或者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;
}

1 个答案:

答案 0 :(得分:1)

我会在select:

中使用别名
  

stmt = connect.prepareStatement(“SELECT AES_DECRYPT(password,username)as decrypted_pa​​ssword FROM userdetails WHERE username =?”);

并从ResultSet中读取值。

  

oldPassword = passwordData.getString(“decrypted_pa​​ssword”);

老实说,我不知道JDBC是否允许列名如

  

AES_DECRYPT(密码,用户名)

我必须补充一点,我想不出从数据库解密密码的好理由。似乎是在向我索要安全漏洞。