Foros del Web » Programando para Internet » PHP »

como le puedo enviar al usuario su password si esta encriptado?

Estas en el tema de como le puedo enviar al usuario su password si esta encriptado? en el foro de PHP en Foros del Web. hola, saben que por fin pude mandar mails con php, entonces cuando un usuario se registra automaticamente le llega un mail donde le digo su ...
  #1 (permalink)  
Antiguo 08/08/2006, 23:49
Avatar de akchido  
Fecha de Ingreso: junio-2006
Mensajes: 61
Antigüedad: 11 años, 6 meses
Puntos: 0
Desacuerdo como le puedo enviar al usuario su password si esta encriptado?

hola, saben que por fin pude mandar mails con php, entonces cuando un usuario se registra automaticamente le llega un mail donde le digo su nombre y su password, pero como este esta encriptado, pues no le aparece lo que el escribio.

1.-como le puedo hacer para que el cliente reciba el password que escribio y no los caracteres de la encriptacion?
2.-se puede hacer eso?
3.-cual seria una posible solucion?


Gracias
__________________
dicen que no hay preguntas tontas sino tontos que no preguntan
  #2 (permalink)  
Antiguo 08/08/2006, 23:55
 
Fecha de Ingreso: enero-2006
Ubicación: Buenos Aires, Argentina
Mensajes: 299
Antigüedad: 11 años, 11 meses
Puntos: 5
Buenas,

No, no se puede *. La idea de encriptar la contraseña es que sólo el usuario la conozca. (Alguien con acceso al sistema podría conocer el "hash" o "resumen", que son esos caracteres ininteligibles, pero no le serviría para validarse como usuario).

Si vas a mandarle en un mail la contraseña, no podés encriptarla (al menos con los métodos habituales, que, a propósito, no son reversibles). Si usás ese sistema, cuando el usuario pierde u olvida la clave, le das la posibilidad de elegir una nueva.


Suerte
Califa

* si estás usando md5, sha u otro similar
  #3 (permalink)  
Antiguo 09/08/2006, 00:24
 
Fecha de Ingreso: agosto-2006
Mensajes: 44
Antigüedad: 11 años, 4 meses
Puntos: 1
Se me ocurre que usas un <input type="password" name="contrasenia"> para obtener la contraseña de tu usuario. Eso significa que cuando procesas esta información usas o $_POST["contrasenia"] o $_GET["contrasenia"], entonces mientras tengas esta variable 'viva', significa que tienes la contraseña que tu usuario escribió aún sin encriptar...

Saludos,
HA
  #4 (permalink)  
Antiguo 09/08/2006, 07:44
 
Fecha de Ingreso: enero-2006
Ubicación: Buenos Aires, Argentina
Mensajes: 299
Antigüedad: 11 años, 11 meses
Puntos: 5
De acuerdo con HemeAquí. Así se podría hacer, aunque sólo en el momento de la registración.

Suerte
Califa
  #5 (permalink)  
Antiguo 09/08/2006, 07:46
 
Fecha de Ingreso: agosto-2006
Mensajes: 41
Antigüedad: 11 años, 4 meses
Puntos: 2
Aquí tienes una clase que te permite encriptar una cadena de caracteres y hacer la operación inversa.

Código PHP:
<?php
define 
(KEY,'this is a very long key, even too long for the cipher');
class 
Crypt {
    function 
encrypt($str) {
        
/* Open module, and create IV */
        
$td mcrypt_module_open(MCRYPT_RIJNDAEL_256''MCRYPT_MODE_CFB'');
        
$key substr(sha1(KEY), 0mcrypt_enc_get_key_size($td));
        
$iv_size mcrypt_enc_get_iv_size($td);
        
$iv mcrypt_create_iv($iv_sizeMCRYPT_RAND);

        
/* Initialize encryption handle */
        
if (mcrypt_generic_init($td$key$iv) != -1) {

            
/* Encrypt data */
            
$c_t rtrim(mcrypt_generic($td$str));
            
mcrypt_generic_deinit($td);
            
mcrypt_module_close($td);
        }
        return 
$iv.$c_t;
    }
        
  function 
decrypt($str) {
        
/* Open module, and create IV */
        
$td mcrypt_module_open(MCRYPT_RIJNDAEL_256''MCRYPT_MODE_CFB'');
        
$key substr(sha1(KEY), 0mcrypt_enc_get_key_size($td));
        
$iv_size mcrypt_enc_get_iv_size($td);
        
$iv substr($str,0,$iv_size);
        
$str substr($str,$iv_size);

        
/* Initialize encryption handle */
        
if (mcrypt_generic_init($td$key$iv) != -1) {

            
/* Decrypt data */
            
$p_t mdecrypt_generic($td$str);
        
            
/* Clean up */
            
mcrypt_generic_deinit($td);
            
mcrypt_module_close($td);
        }
        return 
$p_t;
    }
}
?>
En el define del principio de la clase le indicas tu clave secreta.

Para recuperar el valor encriptado:
Código PHP:
<?php
$c 
= new Crypt();
$enc $c->encrypt('very important data');
?>
Para recuperar el valor original:
Código PHP:
<?php
$c 
= new Crypt();
$ori $c->decrypt($enc);
?>
Albert Lanchas
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 02:19.