Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

AES_ENCRYPT e AES_DECRYPT usando java


Um toString() em uma matriz de bytes não retorna o conteúdo da matriz de bytes, mas [[email protected] seguido pelo hashcode de identidade da matriz de bytes. Na sua inserção você não usou o conteúdo da key como a chave, mas o toString -valor. Você precisa usar um PreparedStatement com uma consulta parametrizada e defina os valores usando 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 faça o mesmo para sua consulta de seleção.

Você nunca deve concatenar valores em sua consulta. Isso o tornará vulnerável à injeção de SQL.