Agora vou falar um pouco sobre como criptografar dados usando o MySQL. Essa técnica é utilizada para armazenar dados de login, aliás, muitos pensam que somente o campo senha deve ser criptografado, mas já vi sistemas em que o nível de segurança era tão alto que até o nome do usuário era criptografado, para que ninguém sequer tivesse acesso a eles.
Segurança de dados é algo muito sério e você deve tomar todos os cuidados para garantir que as informações dos usuários do seu sistema estejam bem protegidas.
Vou criar uma base de dados chamada TesteCriptografia e uma tabela para armazenar nome de usuário e senha.

 

 

Em seguida vou alterar a forma como o MySQL vai receber e armazenar os caracteres e suas codificações na coluna senha. Irei definir o conjunto de caracteres para latin1 e sua codificação para latin1_general_ci, conforme figura abaixo:

 

 

O comando acima definiu, para a coluna senha, o conjunto padrão de caracteres como sendo do grupo latin1 e a codificação como latin1_general_ci. Isso é necessário para que esse campo aceite os dados criptografados que vamos inserir. Se não fizer isso e sua tabela estiver utilizando como codificação padrão qualquer uma das que não dão suporte a esses caracteres, você receberá o famoso erro 1366: “InvalidStringValue”.
Bem, agora que nossa tabela está pronta para receber os dados, vamos entender como criptografá-los e enviar para o banco.
Eu darei um exemplo utilizando o algoritmo AES, disponível no MySQL a partir da versão 4.0.2, e que é extremamente seguro, pois utiliza uma chave de criptografia de 128 bits.
Sua sintaxe é bastante simples. Para criptografar, usa-se:

AES_ENCRYPT(string_a_ser_criptografada, chave_usada_para_criptografar)

E para decriptografar:

AES_DECRYPT(nome_do_campo_da_tabela, chave_usada_para_criptografar)

Parece complicado, mas é bastante simples. Vamos a um exemplo. Vou inserir, na tabela que criei, um usuário chamado Daniel, com senha saocarlos e a chave para o algoritmo utilizar nessa criptografia será microsoft. Vejamos como ficará nosso comando MySQL:

insert into usuario values (“daniel”, AES_ENCRYPT(“saocarlos”, “microsoft”));

Ilustrando o código com comentários, teremos:

 

 

E então, se tentarmos ver o conteúdo do campo senha dando um simples SELECT, receberemos isso como retorno:

 

 

O campo "senha" exibirá essa informação de maneira ilegível, que é o resultado da criptografia da palavra “saocarlos” utilizando o algoritmo AES com chave “microsoft”.
Para decriptografar o campo, uma das opções é:

SELECT nome, AES_DECRYPT(senha, “microsoft”) FROM usuário;

 

 

Vou fazer uma demonstração errando a chave de criptografia. Vou executar o seguinte comando:

SELECT nome, AES_DECRYPT(senha, “apple”) FROM usuario;

 

 

O MySQL nos retornou o valor null, pois não foi possível decriptografar com essa chave.

Para tornar sua aplicação ainda mais segura, recomendo que você crie, no momento da conexão com o banco, uma variável que armazene sua chave, então não será preciso ficar inserindo-a no comando SQL a todo o momento. Por exemplo:

SELECT @chave:="microsoft";

Com isso criamos uma variável chamada chave, e armazenamos nela a string “microsoft”. Agora, nas chamadas para consulta ou gravação de valores criptografados podemos fazer da seguinte forma:

SELECT nome, AES_DECRYPT(senha, @chave) FROM usuario;

 

 

Percebam que a consulta funcionou, pois o banco nos retornou a senha decriptografada, mas no comando utilizamos a variável chave no lugar da palavra “microsoft”, que é o valor da chave. Isso torna o processo ainda mais seguro.


Outras dicas de MySQL


Adicionando colunas a uma tabela já existente

Alterando colunas de uma tabela já existente

Como salvar consulta do MySQL em CSV

Criando uma tabela a partir de outra já existente

Criando usuários e atribuindo permissões

Criptografando dados no MySQL

Descobrindo o tamanho em Mb da sua base de dados

Duplicando uma base de dados (backup da base de dados)

Duplicando uma tabela

Encontrando registros duplicados

Exibindo dados em formato de formulário

Exibindo permissões

Exibindo usuários

Gerando um dump de todas as bases de dados

Gerando um dump de uma base de dados específica

Gerando um dump de uma tabela específica

Gerando um dump somente da base de dados

Identificando e contando registros duplicados

Lendo dados criptografados no MySQL com C#

Removendo colunas a uma tabela já existente

Removendo permissões

Removendo registros duplicados e deixando somente o mais antigo

Removendo registros duplicados e deixando somente o mais recente

Renomeando uma tabela

Restaurando um dump

Retornando apenas os primeiros caracteres do campo – Função Left

Retornando apenas os últimos caracteres do campo – Função Right

Selecionando apenas parte de um campo

Selecionando X registros randômicos de uma tabela

Zerando um campo auto incremento

Você Sabia?

Até a primeira metade dos anos 90 era bastante comum que as trilhas sonoras dos games fossem criadas por mulheres e a responsável pelas músicas do clássico Street Fighter 2 foi Yoko Shimomura. Segundo ela, o ritmo "Tararirarin" da música tema do personagem Blanka, do Brasil, veio à sua cabeça enquanto ela estava no trem a caminho da Capcom.


O primeiro computador a conseguir rodar o jogo Spacewar era o PDP-1, que custava 120 mil dólares e pertencia ao Massachusetts Institute of Technology. O jogo demorou 200 horas para ser desenvolvido, em 1962, e seu criador foi um cientista da computação chamado Steve Russel.


O título Tetris detém o recorde de jogo mais adaptado de todos os tempos. No total foram mais de 60 plataformas diferentes que receberam alguma versão do quebra-cabeças criado por Alexey Pajitnov. Conheça mais sobre este incrível jogo clicando aqui.


Nos primeiros oito dias após o lançamento do console Nintendo Wii foram vendidas 600 mil unidades. Isso equivale a quase um por segundo e estes incríveis números são referentes às vendas apenas nos EUA!


Apenas no ano de 1982, o clássico Pac Man vendeu mais de 400 mil máquinas de fliperama em todo o mundo e recebeu cerca de 7 bilhões de moedas nestas máquinas. Saiba mais.