Foros del Web » Programando para Internet » PHP »

funcion crypt

Estas en el tema de funcion crypt en el foro de PHP en Foros del Web. hola amigos del foro, estoy realizando un sistema de legeo de usuarios y estoy usuando la función crypt, si me encripta, el problema es al ...
  #1 (permalink)  
Antiguo 20/08/2009, 11:44
 
Fecha de Ingreso: marzo-2009
Mensajes: 63
Antigüedad: 15 años, 8 meses
Puntos: 0
funcion crypt

hola amigos del foro, estoy realizando un sistema de legeo de usuarios y estoy usuando la función crypt, si me encripta, el problema es al validar a los usuarios ... lo lo hace...

if($array["password"]== crypt($pass,"semilla") ){
password es como lo tengo en la BD y $pass viene del form

por su ayuda gracias ...
  #2 (permalink)  
Antiguo 20/08/2009, 11:48
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 15 años, 6 meses
Puntos: 1517
Respuesta: funcion crypt

Te sugiero que le des un
Código php:
Ver original
  1. var_dump(crypt($pass,"semilla"));
  2. var_dump($array["password"]);
Para ver si comparten la misma información.

y veas si es igual a
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #3 (permalink)  
Antiguo 20/08/2009, 11:56
 
Fecha de Ingreso: marzo-2009
Mensajes: 63
Antigüedad: 15 años, 8 meses
Puntos: 0
Respuesta: funcion crypt

al usar el codigo dela linea 1 le agrega tres caracteres a la cadena original y con la segunda la cadena original... el proplema es entonces al comparar el pass que da usuario con lo que hay en la BD ya que al llamar la funcion crypt le agrega 3 caracteres po lo que hace que no coincidan...
  #4 (permalink)  
Antiguo 20/08/2009, 12:00
 
Fecha de Ingreso: marzo-2009
Mensajes: 63
Antigüedad: 15 años, 8 meses
Puntos: 0
Respuesta: funcion crypt

que puedeo hacer para desencriptar>???
  #5 (permalink)  
Antiguo 20/08/2009, 12:11
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 15 años, 6 meses
Puntos: 1517
Respuesta: funcion crypt

Una vez en PHP un codigo este encriptado no es posible volver atras. Mira lo que dice la nota en PHP

Cita:
Note: There is no decrypt function, since crypt() uses a one-way algorithm.
Si deseas lee mejor sobre base64_encode y base64_decode pero no es una forma segura de encriptar. Solo te dejo para que veas que con eso puedes decodificar. Pero te repito no es seguro usar este sistema para encriptar password.
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #6 (permalink)  
Antiguo 20/08/2009, 12:14
 
Fecha de Ingreso: abril-2009
Ubicación: Córdoba, Argentina
Mensajes: 28
Antigüedad: 15 años, 6 meses
Puntos: 0
Respuesta: funcion crypt

Cuando encriptaste la pass y la guardaste en la base de datos, usaste tambien "semilla"??

Yo uso la funcion crip para encriptar y nunca tuve ningun problema.

Saludos.
  #7 (permalink)  
Antiguo 20/08/2009, 12:25
 
Fecha de Ingreso: marzo-2009
Mensajes: 63
Antigüedad: 15 años, 8 meses
Puntos: 0
Respuesta: funcion crypt

si... uso "semilla" tanto para encriptar como para poder descencriptar
saludos ...
  #8 (permalink)  
Antiguo 20/08/2009, 12:43
 
Fecha de Ingreso: abril-2009
Ubicación: Córdoba, Argentina
Mensajes: 28
Antigüedad: 15 años, 6 meses
Puntos: 0
Respuesta: funcion crypt

antes del if, pone

echo $array["password"] ;
echo crypt($pass, "semilla");

Y fijate a ojo si son iguales.
  #9 (permalink)  
Antiguo 20/08/2009, 12:53
 
Fecha de Ingreso: marzo-2009
Mensajes: 63
Antigüedad: 15 años, 8 meses
Puntos: 0
Respuesta: funcion crypt

son diferentes
  #10 (permalink)  
Antiguo 20/08/2009, 13:01
 
Fecha de Ingreso: marzo-2009
Mensajes: 63
Antigüedad: 15 años, 8 meses
Puntos: 0
Respuesta: funcion crypt

al hacer echo crypt($pass, "semilla");
le agrega tres caracteres
  #11 (permalink)  
Antiguo 20/08/2009, 13:09
 
Fecha de Ingreso: abril-2009
Ubicación: Córdoba, Argentina
Mensajes: 28
Antigüedad: 15 años, 6 meses
Puntos: 0
Respuesta: funcion crypt

como que le agrega 3 caracteres????

lo unico que se me ocurre, es que estes trayendo mal la clave encriptada desde la base de datos (o como este definido el campo de pass en la base de datos).

Si puedes, pasame el codigo de cuando encriptas y guardas la clave la primera ves, y como esta definida el campo en la base de datos, y como traes y chequeas los datos en la validación.
  #12 (permalink)  
Antiguo 20/08/2009, 13:21
 
Fecha de Ingreso: marzo-2009
Mensajes: 63
Antigüedad: 15 años, 8 meses
Puntos: 0
Respuesta: funcion crypt

base de datos


CREATE TABLE users_bib (
id_user int(11) NOT NULL auto_increment,
login varchar(15) NOT NULL,
nombre varchar(30) NOT NULL,
password varchar(10) NOT NULL,
email varchar(25) NOT NULL,
PRIMARY KEY (`id_user`)
)



codigo para registrar usuario
--------------------------------------
$query="SELECT * FROM users_bib WHERE login='$login'";
$link=mysql_connect($server,$dbuser,$dbpass);
$result=mysql_db_query($database,$query,$link);
if(mysql_num_rows($result)){
echo "El usuario ya existe en la BD";
} else {
mysql_free_result($result);

if($pass1!=$pass2) {
echo "Los passwords deben coincidir<br>";
} else {
$pass1=crypt($pass2,"semilla");


$query="INSERT INTO users_bib VALUES (' ','$login','$nombre','$pass1','$email')";

$result=mysql_db_query($database,$query,$link);
if(mysql_affected_rows($link)){
echo "Usuario introducido correctamente";
} else {
echo "Error introduciendo el usuario";
} }
}
?>


codigo de comprobacion de usuario
----------------------------------
$query="SELECT * FROM users_bib WHERE login='$login'";
$link=mysql_connect($server,$dbuser,$dbpass);
$result=mysql_db_query($database,$query,$link);
if(mysql_num_rows($result)==0){
echo "No existe el login introducido";
} else {
$array=mysql_fetch_array($result);
if($array["password"]==crypt($pass,"semilla") ){
$SESSION["login"]=$login;
$SESSION["nombre"]=$array["nombre"];
session_register("SESSION");
header("location:acceso_bib.html");
} else {
echo "Password incorrecto!";
} } ?>
  #13 (permalink)  
Antiguo 20/08/2009, 13:32
 
Fecha de Ingreso: abril-2009
Ubicación: Córdoba, Argentina
Mensajes: 28
Antigüedad: 15 años, 6 meses
Puntos: 0
Respuesta: funcion crypt

mira, la pass esta definida como una cadena de 10 caracteres, y por ejemplo:

crypt(hola,"semilla") me da:

sex4tcyxkiCDg que tiene 13 caracteres, entonces, cuando la guarda en la bd, te guarda hasta la i, y la CDg la deja afuero, luego, cuando comparas, no son iguales.

Subele al campo pass que tenga 20 o 30 caracteres y no vas a tener drama.

A eso me referia en el mensaje anterior de como definiste en la base de datos.

Saludos y avisa si anduvo.

(vas a tener que volver a cargar la contraseña nueva en la base de datos).
  #14 (permalink)  
Antiguo 21/08/2009, 09:49
 
Fecha de Ingreso: marzo-2009
Mensajes: 63
Antigüedad: 15 años, 8 meses
Puntos: 0
Respuesta: funcion crypt

muchas gracias por la ayuda.. funciono... modifique el tamaño del campo password a 15 e inclusive funciona con axactamente 13 espacio... supongo entonces que que la funcion cryp encripata a 13 caracteres... si me equivoco haganmelo saber...
de todas formas gracias ...
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 12:06.