У меня проблемы с пониманием того, что связано с AES_DECRYPT. Я сделал тестовую базу данных в SQL и таблицу tblKorisnici в нем. У меня возникли проблемы с сифрой, в которой хранятся данные с использованием AES_ENCRYPT через MySQL.
Проблема в том, что я хочу, чтобы приложение проверяло корисник и сифру, если оба совпадения lblInfo должны отображать текст, если данные для входа были введены правильно, есть ли пользователь с указанным корисником и сифрой в таблице.
private void btnPotvrdiActionPerformed(java.awt.event.ActionEvent evt) {
String sql = "SELECT korisnik, AES_DECRYPT(sifra, 'sometext'), ime, prezime, pozicija FROM tblKorisnici WHERE korisnik = ? AND sifra = ?";
try {
konekcija = DriverManager.getConnection("jdbc:mysql://localhost/lpa", "root", "");
pst = konekcija.prepareStatement(sql);
pst.setString(1, txtKorisnik.getText());
pst.setString(2, pasSifra.getText());
rs = pst.executeQuery();
if (rs.next()) {
lblInfo.setText("Login success");
}
else {
lblInfo.setText("Wrong");
}
}
catch (SQLException | HeadlessException ex){
JOptionPane.showMessageDialog(null, ex);
}
}
Но почему-то я не могу заставить это работать. korisnik, sifra, ime, prezime и pozicija являются полями в таблице, только sifra шифруется с использованием AES_ENCRYPT и «sometext» в качестве ключа шифрования.
Я не получаю никаких ошибок, просто не работает, как задумано. Вероятно, что-то с расшифровкой сифры, потому что, когда я пробую поле сифры без шифрования с данными, все работает.