Mysql
 sql >> Database >  >> RDS >> Mysql

AES_ENCRYPT e AES_DECRYPT utilizzando java

Un toString() su un array di byte non restituisce il contenuto dell'array di byte, ma [[email protected] seguito dall'hashcode di identità dell'array di byte. Nel tuo inserto non hai utilizzato il contenuto di key come chiave, ma toString -valore. Devi usare un PreparedStatement con una query parametrizzata e impostare i valori utilizzando 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);

E fai lo stesso per la query selezionata.

Non dovresti mai concatenare i valori nella tua query. Ti renderà vulnerabile all'iniezione di SQL.