Foros del Web » Programación para mayores de 30 ;) » .NET »

como guardar contraseñas encryptadas en C#.net en una bse de datos en sql server 2008

Estas en el tema de como guardar contraseñas encryptadas en C#.net en una bse de datos en sql server 2008 en el foro de .NET en Foros del Web. muy buenas a todos mi pregunta es la siguiente : encrypto contraseñas con el siguiente codigo en C#.net: Cita: private string Encrypt(string cadena) { if ...
  #1 (permalink)  
Antiguo 07/04/2011, 10:29
 
Fecha de Ingreso: enero-2011
Ubicación: Potosi-Bolivia
Mensajes: 18
Antigüedad: 13 años, 2 meses
Puntos: 0
como guardar contraseñas encryptadas en C#.net en una bse de datos en sql server 2008

muy buenas a todos mi pregunta es la siguiente : encrypto contraseñas con el siguiente codigo en C#.net:
Cita:
private string Encrypt(string cadena)
{
if (!string.IsNullOrEmpty(cadena))
{
try
{
bytString = UE.GetBytes(cadena);
bytEncriptar = sec.Encrypt(bytString, false);
cadena = Convert.ToBase64String(bytEncriptar);
}
catch(Exception ex)
{
System.Windows.Forms.MessageBox.Show(ex.Message);
}
}
return cadena;
}
y con este desencrypto
Cita:
private string Decrypt(string clave)
{
string ax = "";
if (!string.IsNullOrEmpty(clave))
{
try
{
//bytDesencriptar = sec.Decrypt(Convert.FromBase64String(clave), false);
bye = Convert.FromBase64String(clave);
bytDesencriptar = sec.Decrypt(bye,false);
ax = UE.GetString(bytDesencriptar);
}
catch (Exception ex)
{

System.Windows.Forms.MessageBox.Show("1--"+ex.Message);
}
}
return ax;
}
y me funciona de maravilla .....y cuando lo encrypto lo guardo en una vase de datos en una columna de tipo varchar pero cuando recupero de la base de datos este valo y lo mando a desencryptar me sale error ...datos incorrectos no kiere desencriptarlo y pienso ke es por la manera de guardar en la base de datos en si el tipo de columna .....por ke los dos metodos funcionan bien por ke encrypto una contraseña y sin guardar en la base de datos la mando a desencryptar y lo ase muy bien lo malo es ke tengo ke guardar en la base de datos pero cuando la recupero no kiere desemcriptar agradeceria si alguien me puede ayudar.adios
  #2 (permalink)  
Antiguo 07/04/2011, 12:20
Avatar de jcarrascal  
Fecha de Ingreso: enero-2008
Mensajes: 87
Antigüedad: 16 años, 3 meses
Puntos: 6
Respuesta: como guardar contraseñas encryptadas en C#.net en una bse de datos en sql

No es muy recomendable cifrar y descifrar contraseñas ya que si alguien te descubre la clave van a tener acceso a todas las contraseñas a la vez. Es mejor almacenar un Hash de la contraseña y cuando tengas que comprobar si es la correcta simplemente sacas otro Hash y compruebas que es el mismo.

Aquí tienes un método que uso para generar el Hash:

Código C#:
Ver original
  1. public static string Hash(string str)
  2. {
  3.     if (string.IsNullOrEmpty(str))
  4.         throw new ArgumentNullException("str");
  5.  
  6.     byte[] bytes;
  7.     using (HashAlgorithm ha = RIPEMD160.Create())
  8.         bytes = ha.ComputeHash(Encoding.Default.GetBytes(str));
  9.     return ToHexString(bytes);
  10. }

Cuando la vas a guardar sacas un hash

Código C#:
Ver original
  1. user.PasswordHash = CryptographyHelper.Hash(password);
  2. user.Save();

Y cuando necesites comprobar si es la misma contraseña sacas otro hash:

Código C#:
Ver original
  1. if (CryptographyHelper.Hash(password) == user.PasswordHash)
  2.     // Correcto
  3. else
  4.     // Error

Algo más seguro aun es generar un Hash con sal, lo que consiste en agregarle un texto al hash de la contraseña y volver a sacar otro Hash, pero con el método que te mostré ya vas por buen camino.

Etiquetas: contraseñas, server, sql
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 23:52.