Usuário com melhor resposta
Criptografia em WPF

Pergunta
-
Pessoal estou no meu primeiro projeto em WPF usando Visual Stduio 2010, Entity Framework no .NET Framework 4.0 e ai estou com dificuldades em usar criptografia(anteriormente no framework 3.0 usava SHA1 ou MD 5) mas no VS2010 não reconhece algumas classes, o que vocês me recomendam tem algum artigo ou exemplo para eu em basear?
Obrigado.
Segie a classe que usava anteriormente no Framework 3.0
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Web.Security; using System.Web.Configuration; using System.Security.Cryptography; using System.IO; namespace IASD.Core.Util { public class Criptografia { public static string HashSHA1(string Password) { return FormsAuthentication.HashPasswordForStoringInConfigFile(Password, "SHA1"); } public static string HashMD5(string Password) { return FormsAuthentication.HashPasswordForStoringInConfigFile(Password, "MD5"); } private static byte[] chave = { }; private static byte[] iv = { 12, 34, 56, 78, 90, 102, 114, 126 }; public static string Criptografar(string valor, string chaveCriptografia) { DESCryptoServiceProvider des; MemoryStream ms; CryptoStream cs; byte[] input; try { des = new DESCryptoServiceProvider(); ms = new MemoryStream(); input = Encoding.UTF8.GetBytes(valor); chave = Encoding.UTF8.GetBytes(chaveCriptografia.Substring(0, 8)); cs = new CryptoStream(ms, des.CreateEncryptor(chave, iv), CryptoStreamMode.Write); cs.Write(input, 0, input.Length); cs.FlushFinalBlock(); return Convert.ToBase64String(ms.ToArray()); } catch (Exception ex) { throw ex; } } public static string Descriptografar(string valor, string chaveCriptografia) { DESCryptoServiceProvider des; MemoryStream ms; CryptoStream cs; byte[] input; try { des = new DESCryptoServiceProvider(); ms = new MemoryStream(); input = new byte[valor.Length]; input = Convert.FromBase64String(valor.Replace(" ", "+")); chave = Encoding.UTF8.GetBytes(chaveCriptografia.Substring(0, 8)); cs = new CryptoStream(ms, des.CreateDecryptor(chave, iv), CryptoStreamMode.Write); cs.Write(input, 0, input.Length); cs.FlushFinalBlock(); return Encoding.UTF8.GetString(ms.ToArray()); } catch (Exception ex) { throw ex; } } } }
Respostas
-
Moizés,
Você pode usar as funções de Hash do Core da .NET framework, veja este exemplo:
public string EncodeMD5Password(string originalPassword) { Byte[] originalBytes; Byte[] encodedBytes; MD5 md5; // instancia o MD5CryptoServiceProvider, e transforma a password em byte[] para calcular o hash md5 = new MD5CryptoServiceProvider(); originalBytes = ASCIIEncoding.Default.GetBytes(originalPassword); encodedBytes = md5.ComputeHash(originalBytes); // converte o hash em string return BitConverter.ToString(encodedBytes); } public string EncodeSH1Password(string originalPassword) { Byte[] originalBytes; Byte[] encodedBytes; SHA1 sh1; // instancia o MD5CryptoServiceProvider, e transforma a password em byte[] para calcular o hash sh1 = new SHA1CryptoServiceProvider(); originalBytes = ASCIIEncoding.Default.GetBytes(originalPassword); encodedBytes = sh1.ComputeHash(originalBytes); // converte o hash em string return BitConverter.ToString(encodedBytes); }
At.,
Rogério de Resende Ohashi | Ohashi.NET (.NET, Security, C#, WinForms, WCF, Workflow, Azure, Windows Phone, Mono)- Sugerido como Resposta Elvis Rodrigues Coach sexta-feira, 27 de agosto de 2010 15:15
- Marcado como Resposta Moizés Cerqueira segunda-feira, 30 de agosto de 2010 13:08
Todas as Respostas
-
Moizés,
Você pode usar as funções de Hash do Core da .NET framework, veja este exemplo:
public string EncodeMD5Password(string originalPassword) { Byte[] originalBytes; Byte[] encodedBytes; MD5 md5; // instancia o MD5CryptoServiceProvider, e transforma a password em byte[] para calcular o hash md5 = new MD5CryptoServiceProvider(); originalBytes = ASCIIEncoding.Default.GetBytes(originalPassword); encodedBytes = md5.ComputeHash(originalBytes); // converte o hash em string return BitConverter.ToString(encodedBytes); } public string EncodeSH1Password(string originalPassword) { Byte[] originalBytes; Byte[] encodedBytes; SHA1 sh1; // instancia o MD5CryptoServiceProvider, e transforma a password em byte[] para calcular o hash sh1 = new SHA1CryptoServiceProvider(); originalBytes = ASCIIEncoding.Default.GetBytes(originalPassword); encodedBytes = sh1.ComputeHash(originalBytes); // converte o hash em string return BitConverter.ToString(encodedBytes); }
At.,
Rogério de Resende Ohashi | Ohashi.NET (.NET, Security, C#, WinForms, WCF, Workflow, Azure, Windows Phone, Mono)- Sugerido como Resposta Elvis Rodrigues Coach sexta-feira, 27 de agosto de 2010 15:15
- Marcado como Resposta Moizés Cerqueira segunda-feira, 30 de agosto de 2010 13:08
-
-
Moizés,
Você vai usar as mesmas classes da Framework 2 que passei no meu Post. Não há diferença.
at.,
Rogério de Resende Ohashi | Ohashi.NET (.NET, Security, C#, WinForms, WCF, Workflow, Azure, Windows Phone, Mono) -
-
Você não precisa usar estes Namespaces para fazer a criptografia não...
Você vai usar as classes do Namespace System.Security.Cryptography.
at.,
Rogério de Resende Ohashi | Ohashi.NET (.NET, Security, C#, WinForms, WCF, Workflow, Azure, Windows Phone, Mono) -
-
Móizés estou utilizando TrypleDes e MD5 que utiliza o namespace System.Security.Cryptography;
aqui vai exemplo de como crypt./decrypt. utilizando uma chave de segurança(key):
public static byte[] Encryption(string senha, string key) { TripleDES des = CreateDES(key); ICryptoTransform ct = des.CreateEncryptor(); byte[] input = Encoding.Unicode.GetBytes(senha); return ct.TransformFinalBlock(input, 0, input.Length); } public static string Decryption(byte[] b, string key) { TripleDES des = CreateDES(key); ICryptoTransform ct = des.CreateDecryptor(); byte[] output = ct.TransformFinalBlock(b, 0, b.Length); return Encoding.Unicode.GetString(output); } static TripleDES CreateDES(string key) { MD5 md5 = new MD5CryptoServiceProvider(); TripleDES des = new TripleDESCryptoServiceProvider(); des.Key = md5.ComputeHash(Encoding.Unicode.GetBytes(key)); des.IV = new byte[des.BlockSize / 8]; return des; }
no exemplo você chama o método passando o que você quer encryptar e a senha, que vai ser utilizada para decriptar o hash posteriormente, como parâmetros..
tenta ae!
abraço.