Tempo atrás estava passando um sniffer num cliente meu e peguei alguns dados importantes de uma tabela mysql que foi executado através de uma linha de comando numa estação, no época não dei muita importância , pesquisando no site código fonte um outro assunto que não tem nada a ver e por consciendência achei a seguinte dica:
A criptografia de dados no MySQL pode usar a função AES_ENCRYPT() e AES_DECRYPT(), estão disponíveis a partir da versão 4.0.2 .
A vantagem desta função é que você poderá utilizar uma chave privada para encriptar e desencriptar os dados, permitindo a gravação dos dados seguramente e a leitura da mesma forma como foram gravados.
Inserindo um registro na tabela no MySQL com um campo encriptado
INSERT INTO TBL_DADOS(CAMPO1, CAMPO2) VALUES(‘Meu valor não encriptado’, AES_ENCRYPT(‘Meu valor encriptado’, ‘MINHA_CHAVE’);
Onde “MINHA_CHAVE” palavra chave que será utilizada para desencriptar os seus dados.
O resultado de um campo encriptado é um valor binário como por exemplo mž?ôzDF“‘²šaѵÓׯ|fõÎ*-^êäÃ
Para tornar a inserção mais segura, você poderá utilizar uma variável registrada no momento da conexão com o banco de dados:
SELECT @CHAVE_CRIPTOGRAFIA := ‘minha_chave’;
E nos seus comandos SQL, utilize a variável normalmente:
INSERT INTO TBL_DADOS(CAMPO1, CAMPO2) VALUES(‘Meu valor não encriptado’, AES_ENCRYPT(‘Meu valor encriptado’, @CHAVE_CRIPTOGRAFIA);
Descriptografar os dados?
Basta utilizar a função inversa AES_DECRYPT passando o campo e a chave que você utilizou para encriptar os dados.
SELECT AES_DECRYPT(CAMPO2, @CHAVE_CRIPTOGRAFIA) FROM TBL_DADOS;