Mysql
 sql >> Baza danych >  >> RDS >> Mysql

AES_ENCRYPT i AES_DECRYPT przy użyciu java

toString() na tablicy bajtów nie zwraca zawartości tablicy bajtów, ale [[email protected] po którym następuje identyfikator hashcode tablicy bajtów. We wstawce nie użyłeś zawartości key jako klucz, ale toString -wartość. Musisz użyć PreparedStatement za pomocą sparametryzowanego zapytania i ustaw wartości za pomocą setBytes :

psmt = con.prepareStatement("insert into mm values (?, AES_ENCRYPT(?, ?), AES_ENCRYPT(?, ?))");
psmt.setInt(1, id);
psmt.setString(2, name);
psmt.setBytes(3, key);
psmt.setstring(4, sal);
psmt.setBytes(5, key);

Zrób to samo dla wybranego zapytania.

Nigdy nie należy łączyć wartości w zapytaniu. To sprawi, że będziesz podatny na wstrzyknięcie SQL.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. PHP :Używanie zmiennej do przechowywania nazwy tabeli i używanie tej zmiennej w zapytaniach

  2. Jak ustawić limit czasu połączenia w zależności od logowania użytkownika w MySQL?

  3. Zapisywanie obrazu w MySQL z Javy

  4. Łącznik MySql C++ getString() nie działa poprawnie, podczas gdy getInt działa idealnie

  5. Kompilacja NSIS - mysql nie jest rozpoznawany jako działający program - Dlaczego instrukcja NsExec::ExecToLog nie działa?