Agora vou falar sobre um problema comum, que é quando tentamos ler, no ASP.Net, um campo criptografado com a função AES_ENCRYPT do MySQL.
Como essa função transforma a string enviada em um dado binário, a leitura dos dados pode retornar algo ilegível ou apenas identificado como um vetor de bytes. Portanto, se o retorno do seu DataReader ou seu DataSet é System.Byte[], saiba que o motivo é esse, mas a solução é simples.
Vejam esse trecho de código:
String strComando = "SELECT AES_DECRYPT(senha, '" + chave + "') as senha FROM clientes
WHERE email LIKE '" + strEmailUsuario + "'";
MySqlConnectionminhaConexao = new MySqlConnection(strStringConexao);
MySqlCommandmeuComando = new MySqlCommand(strComando, minhaConexao);
minhaConexao.Open();
MySqlDataReaderdr;
dr = meuComando.ExecuteReader();
String strSenha;
try
{
while (dr.Read())
{
strSenha = dr.GetString("senha");
}
}
finally
{
minhaConexao.Close();
}
O método GetString consegue identificar e retornar o conteúdo correto, ou seja, a string contida no campo criptografado.
Claro que para isso o comando AES_DECRYPT precisa ter a sintaxe correta e a chave de criptografia precisa ser a mesma usada no momento de gravação do dado no banco. Caso não tenha ficado claro, crie algo como:
DataSetds = newDataSet();
strSenha= ds.Tables[0].Rows[0]["senha"].ToString();
Você verá que o retorno não será a String, mas apenas System.Byte[].
Ou seja, se vai ler algo gravado num campo criptografado, use o bom e velho GetString().
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?
Donkey Kong
A empresa Universal City Studios, detentora dos direitos autorais do King Kong, processou a Nintendo logo após o lançamento de Donkey Kong, pois segundo ela, o game violava os seus direitos. Ela venceu o processo e recebeu da Nintendo uma indenização de quase 2 milhões de dólares.
Ábaco
O ábaco é o dispositivo de cálculo mais antigo construído e conhecido pelo homem. Suas formas mais primitivas datam de 400 a.C. e eles foram encontrados na China e na Babilônia. Para saber mais sobre a história dos computadores, clique aqui.
PC com barulho?
Excesso de barulho dentro do seu gabinete, principalmente logo que você o liga, pode ser sintoma de problemas nas ventoinhas, que podem precisar ser limpas ou trocadas. Entre em contato com um técnico de sua confiança e verifique isso o quanto antes.
Final Fantasy
O famoso título Final Fantasy, da Square Enix, tem este nome exatamente porque se tratava da última esperança da empresa, que estava à beira da falência quando o lançou. Clique aqui e conheça detalhes dessa história.
Final Fantasy X
O jogo Final Fantasy X para o Sony Playstation 2 vendeu, apenas no dia do seu lançamento, 1.455.732 cópias, estabelecendo um recorde de vendagem para as primeiras 24 horas de um game. Méritos da SquareSoft, que desenvolveu um excelente produto!