Mysql
 sql >> Datenbank >  >> RDS >> Mysql

AES_ENCRYPT und AES_DECRYPT mit Java

Ein toString() auf einem Byte-Array gibt nicht den Inhalt des Byte-Arrays zurück, sondern [[email protected] gefolgt vom Identitäts-Hashcode des Byte-Arrays. In Ihrer Beilage haben Sie den Inhalt von key nicht verwendet als Schlüssel, aber der toString -Wert. Sie müssen ein PreparedStatement verwenden B. mit einer parametrisierten Abfrage, und setzen Sie die Werte mit 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);

Machen Sie dasselbe für Ihre ausgewählte Abfrage.

Sie sollten niemals Werte in Ihrer Abfrage verketten. Es macht Sie anfällig für SQL-Injection.