Foros del Web

Foros del Web (http://www.forosdelweb.com/)
-   .NET (http://www.forosdelweb.com/f29/)
-   -   Una de encriptacion (http://www.forosdelweb.com/f29/encriptacion-444689/)

moNTeZIon 20/11/2006 09:46

Una de encriptacion
 
Buenas,
Tengo este código para encriptar unos datos:
Código:

Public Shared Function Encriptar(ByVal Texto As String) As String
    Dim BytesLimpios As [Byte]()
    BytesLimpios = New UnicodeEncoding().GetBytes(Texto)
    Dim BytesEncriptados As [Byte]() = CType(CryptoConfig.CreateFromName("MD5"), HashAlgorithm).ComputeHash(BytesLimpios)
    Dim TextoEncriptado As String = BitConverter.ToString(BytesEncriptados)
    Return TextoEncriptado
End Function

La pregunta es, tengo la posibilidad de crearme mi funcion "Desencriptar" o se trata de un tipo de encriptación que no se puede volver a deshacer?
Me han comentado que cabe la posibilidad que la encriptación solo exista en un sentido, y lo unico que se puede hacer es comparar el resultado encriptado, pero no desencriptar un texto ya encriptado...
Pueden aclararme esto?
Gracias!

jhonwilliams 20/11/2006 11:26

Cita:

Iniciado por moNTeZIon (Mensaje 1793919)
Dim BytesEncriptados As [Byte]() = CType(CryptoConfig.CreateFromName("MD5"), HashAlgorithm).ComputeHash(BytesLimpios)

El cifrado con MD5 o SHA no se pueden deshacer, si quiere cifrar e invertir el cifrado puedes usar el metodo Rijndael.

Nota:
-Por seguridad las claves de los usuarios se cifran con MD5 o SHA para evitar que la clave o password del mismo sea leida por terceros.
-Las configuraciones de las aplicaciones se cifran con un metodo que se pueda invertir con el objetivo que se pueda leer cuando es necesario, ejemplo el string de conexion, a nosotros no nos interesa que el usuario se de cuenta cual es el user y pass del server de sql, pero si nos interesa descifrar y leerlo para poder realizar la conexion a la base de datos.

Saludos
:adios:

moNTeZIon 20/11/2006 13:02

Gracias por la aclaración jhonwilliams!
O sea, que si me quedo con el sistema actual, que por lo que dices es lo correcto, cuando el usuario olvide la contraseña que?
Debo currarme ahora un sistema de generación de contraseñas para enviarles a los usuarios que las olviden?
Qué otra cosa podría hacer?
Es que me encuentro desarrollando la página que les enviava la contraseña a su correo electrónico, pero me encontré con que no puedo desencriptarla.
Gracias por las sugerencias.
Saludos!

jhonwilliams 20/11/2006 13:16

Creo que debes pensar en un sistema que le permita al usuario asignarse una nueva contraseña en caso de que la olvide, pero si son pocos usuarios tambien podrias hacerlo tu., pero bueno no nos salgamos del tema, como pensaria yo en un sistema de ese tipo.

1. Soy usuario y pierdo mi clave.
2. Voy a la pagina de recuperar clave.
3. Proceso para recuperacion de clave
3.1 Verificar que el usuario si exite en la bd.
3.2 Asignar un codigo de validacion, recomendado hacer un GUID
3.3 En un capo de la base de datos (COD_VERIFICACION), almacenar ese GUID.
3.4 Enviar un correo al usuario con el codigo de verificacion
3.5 En la pagina de nueva clave, deben haber tres campos.
-Codigo de Validacion (GUID)
-Nueva Clave
-Repetir Clave
3.6 Se realiza un select a los usuario "SELECT * FROM tblUsuario Where COD_VERIFICACION=GUID and USUARIO=USUARIO"
3.7 Si lo encuentra asiganar la clave que se digito.

Nota.
Debes pensar en como enviar el usuario, ya que en la pagina de verificacion te dije que eran tres campos, pero tampoco me parece optimo tener un campo usuario y que lo puenda digitar. Se me ocurre que tal vez pasandolo por URL.

¿Como identificas tus usuarios?

Saludos
:adios:

u_goldman 20/11/2006 13:41

Cita:

Iniciado por jhonwilliams (Mensaje 1794382)
Nota.
Debes pensar en como enviar el usuario, ya que en la pagina de verificacion te dije que eran tres campos, pero tampoco me parece optimo tener un campo usuario y que lo puenda digitar. Se me ocurre que tal vez pasandolo por URL.

¿Como identificas tus usuarios?

Saludos
:adios:

Regularmente deberías tener como usuario una cuenta de email válida, así solo tienes que generar una nueva contraseña, y envíandola a esa cuenta de email.
Después puedes ponerte elegante, y no "activar" esa nueva contraseña sino hasta que haya sido confirmada. Con esto quizás necesitarías enviar en el email un link para este propósito.

Saludos

moNTeZIon 20/11/2006 17:50

Gracias por las ideas!
Identifico mis usuarios con email y contraseña.
Me parece genial la opción de jhonwilliams.
Les enviaré el link con el GUID al correo, y haré una nueva página para que el usuario establezca su nueva contraseña.
Un saludo!


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

Desarrollado por vBulletin® Versión 3.8.7
Derechos de Autor ©2000 - 2026, Jelsoft Enterprises Ltd.