sql >> Databasteknik >  >> RDS >> Mysql

AES_ENCRYPT och AES_DECRYPT med java

En toString() på en byte-array returnerar inte innehållet i byte-arrayen, utan [[email protected] följt av identitetshashkoden för byte-arrayen. I din bilaga använde du inte innehållet i key som nyckel, men toString -värde. Du måste använda en PreparedStatement med en parametriserad fråga och ställ in värdena med 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);

Och gör samma sak för din valda fråga.

Du bör aldrig sammanfoga värden i din fråga. Det kommer att göra dig sårbar för SQL-injektion.



  1. Hur konverterar jag SQL-fråga till Rails Active Record Query?

  2. T-SQL tisdag #65:Lär ut något nytt

  3. ERRO 1215. MySql InnoDB

  4. Hur man skickar e-post från MySQL 5.1