Criptografar dados no MySQL


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ž?ôzDF“‘²š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;

1 thoughts on “Criptografar dados no MySQL

Deixe um comentário