Criptografia de colunas no MySQL – Simples, fácil e objetivo

O MySQL não possui uma função nativa para criptografar uma tabela ou todo o banco de dados, mas ele possui funções nativas para criptografia de colunas.

Criptografia de colunas no MySQL

Ao optar por usar criptografia de colunas no MySQL, você deve ter em mente que isso irá ter um custo no desempenho do seu banco de dados. Criptografia sempre gasta tempo de CPU, seja ele em banco de dados ou em aplicações. Ciente disso, você deve fazer uma analise do banco de dados para levantar as colunas que são sensíveis ao negócio e que realmente necessitam ser criptografadas.

Para criptografar uma coluna sensível de uma tabela (exemplo: email VARCHAR(150) da tabela clientes), primeiro precisamos alterar o tipo da coluna para varbinary(255):

alter table `clientes` modify column email varbinary(255);

Agora, para criptografar esta coluna, execute o comando abaixo:

UPDATE `clientes` SET email = AES_ENCRYPT(email,’chave-para-criptografia’);

Pronto, a coluna email está criptografada com o algorítimo de criptografia AES.

Para recuperar os e-mails da tabela clientes de forma descriptografada basta executar o comando abaixo:

SELECT CAST(AES_DECRYPT(email,’chave-para-criptografia’) AS char(255)) FROM `clientes`;

Além do algoritmo de criptografia AES o MySQL também possui os algoritmos de criptografia DES, MD5, SHA-1 e SHA-2. Evite usar os algoritmos MD5 e SHA-1, pois esses dois algoritmos de criptografia foram expostos.

Atenção!

Colunas do tipo VARBINARY não podem ser indexadas.

Marcos de P. Muniz

Graduado em Sistemas de Informação pela UEMG, é Pós Graduado em Segurança da Informação pela Faculdade Pitágoras, é desenvolvedor PHP desde 2006, trabalha como Analista / Desenvolvedor em uma empresa que atua na área de ensino a distância, faz freelancer criando sites, sistemas e portais utilizando PHP, MySQL e jQuery.

Você pode gostar...

1 Resultado

  1. Luis Eduardo disse:

    Estou com um projeto da diciplina de OO da faculdade onde tenho q fazer um sistema de gerenciamento de uma loja, como estou usando banco de dados estou usando tambem o hibernate, existe um jeito de implementar essa criptografia junto com o hibernate?

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *