Com o .Net podemos facilmente codificar e descodificar mensagens através do namespace Cryptography.
Neste post vamos estudar um programa que encripta um texto com base numa palavra passe e posteriormente descodifica a mensagem.
Começamos por criar uma função para encriptar:
string codifica(string mensagem, string ppasse)
{
//este vector vai ficar com a mensagem encriptada
byte [] mensagem_codificada;
//vamos utilizar codificação UTF8
System.Text.UTF8Encoding UTF8 = new System.Text.UTF8Encoding();
// Vamos utilizar o algoritmo MD5 para fazer o Hash da palavra passe
MD5CryptoServiceProvider HashProvider = new MD5CryptoServiceProvider();
//Agora podemos então fazer o hash da palavra passe
byte[] TDESChave = HashProvider.ComputeHash(UTF8.GetBytes(ppasse));
//De seguida vamos escolher o algoritmo de encriptação
TripleDESCryptoServiceProvider TDESAlgoritmo = new TripleDESCryptoServiceProvider();
//Configuração do algoritmo
TDESAlgoritmo.Key = TDESChave;
TDESAlgoritmo.Mode = CipherMode.ECB;
TDESAlgoritmo.Padding = PaddingMode.PKCS7;
//Para podermos converter a string primeiro temos de a converter para um vector
byte[] dados = UTF8.GetBytes(mensagem);
//Finalmente podemos codificar a mensagem
try{
ICryptoTransform codificador = TDESAlgoritmo.CreateEncryptor();
mensagem_codificada = codificador.TransformFinalBlock(dados,0,dados.Length);
}finally{
//Agora limpamos a casa
TDESAlgoritmo.Clear();
HashProvider.Clear();
}
//Só falta devolver a mensagem codificada
return Convert.ToBase64String(mensagem_codificada);
}
Para descodificar o processo é muito parecido e aqui fica o código:
string descodifica(string mensagem, string ppasse)
{
//este vector vai ficar com a mensagem desencriptada
byte[] mensagem_descodificada;
//Codificaçao utilizada
System.Text.UTF8Encoding UTF8 = new System.Text.UTF8Encoding();
// Vamos utilizar o algoritmo MD5 para fazer o Hash da palavra passe
MD5CryptoServiceProvider HashProvider = new MD5CryptoServiceProvider();
//Agora podemos então fazer o hash da palavra passe
byte[] TDESChave = HashProvider.ComputeHash(UTF8.GetBytes(ppasse));
//o algoritmo de encriptação
TripleDESCryptoServiceProvider TDESAlgoritmo= new TripleDESCryptoServiceProvider();
//Configuração do algoritmo
TDESAlgoritmo.Key = TDESChave;
TDESAlgoritmo.Mode = CipherMode.ECB;
TDESAlgoritmo.Padding = PaddingMode.PKCS7;
//Para podermos converter a string primeiro temos de a converter para um vector
byte[] dados = Convert.FromBase64String(mensagem);
//Vamos descodificar a amensagem
try
{
ICryptoTransform descodificador = TDESAlgoritmo.CreateDecryptor();
mensagem_descodificada = descodificador.TransformFinalBlock(dados, 0, dados.Length);
}
finally
{
// Por fim limpeza geral
TDESAlgoritmo.Clear();
HashProvider.Clear();
}
// Devolver a mensagem
return UTF8.GetString(mensagem_descodificada );
}
Neste post vamos estudar um programa que encripta um texto com base numa palavra passe e posteriormente descodifica a mensagem.
Começamos por criar uma função para encriptar:
string codifica(string mensagem, string ppasse)
{
//este vector vai ficar com a mensagem encriptada
byte [] mensagem_codificada;
//vamos utilizar codificação UTF8
System.Text.UTF8Encoding UTF8 = new System.Text.UTF8Encoding();
// Vamos utilizar o algoritmo MD5 para fazer o Hash da palavra passe
MD5CryptoServiceProvider HashProvider = new MD5CryptoServiceProvider();
//Agora podemos então fazer o hash da palavra passe
byte[] TDESChave = HashProvider.ComputeHash(UTF8.GetBytes(ppasse));
//De seguida vamos escolher o algoritmo de encriptação
TripleDESCryptoServiceProvider TDESAlgoritmo = new TripleDESCryptoServiceProvider();
//Configuração do algoritmo
TDESAlgoritmo.Key = TDESChave;
TDESAlgoritmo.Mode = CipherMode.ECB;
TDESAlgoritmo.Padding = PaddingMode.PKCS7;
//Para podermos converter a string primeiro temos de a converter para um vector
byte[] dados = UTF8.GetBytes(mensagem);
//Finalmente podemos codificar a mensagem
try{
ICryptoTransform codificador = TDESAlgoritmo.CreateEncryptor();
mensagem_codificada = codificador.TransformFinalBlock(dados,0,dados.Length);
}finally{
//Agora limpamos a casa
TDESAlgoritmo.Clear();
HashProvider.Clear();
}
//Só falta devolver a mensagem codificada
return Convert.ToBase64String(mensagem_codificada);
}
Para descodificar o processo é muito parecido e aqui fica o código:
string descodifica(string mensagem, string ppasse)
{
//este vector vai ficar com a mensagem desencriptada
byte[] mensagem_descodificada;
//Codificaçao utilizada
System.Text.UTF8Encoding UTF8 = new System.Text.UTF8Encoding();
// Vamos utilizar o algoritmo MD5 para fazer o Hash da palavra passe
MD5CryptoServiceProvider HashProvider = new MD5CryptoServiceProvider();
//Agora podemos então fazer o hash da palavra passe
byte[] TDESChave = HashProvider.ComputeHash(UTF8.GetBytes(ppasse));
//o algoritmo de encriptação
TripleDESCryptoServiceProvider TDESAlgoritmo= new TripleDESCryptoServiceProvider();
//Configuração do algoritmo
TDESAlgoritmo.Key = TDESChave;
TDESAlgoritmo.Mode = CipherMode.ECB;
TDESAlgoritmo.Padding = PaddingMode.PKCS7;
//Para podermos converter a string primeiro temos de a converter para um vector
byte[] dados = Convert.FromBase64String(mensagem);
//Vamos descodificar a amensagem
try
{
ICryptoTransform descodificador = TDESAlgoritmo.CreateDecryptor();
mensagem_descodificada = descodificador.TransformFinalBlock(dados, 0, dados.Length);
}
finally
{
// Por fim limpeza geral
TDESAlgoritmo.Clear();
HashProvider.Clear();
}
// Devolver a mensagem
return UTF8.GetString(mensagem_descodificada );
}
E a interface é esta beleza
Comentários
Enviar um comentário