PHP - Crypt de PHP no funciona en localhost

 
Vista:
Imágen de perfil de Luis Alejandro

Crypt de PHP no funciona en localhost

Publicado por Luis Alejandro (3 intervenciones) el 20/09/2016 03:24:20
Capture3


Capture


Capture2

Hola a todos! les comento mi problema. Resulta que estoy tratando de ejecutar este sencillo codigo de encriptacion de contrasena con la funcion Crypt de PHP, pero resulta que en mi servidor local no funciona, en cambio en servidores gratuitos que tengo para subir mis proyectos a internet, la funcion Crypt si se ejecuta normalmente como lo pueden ver en las imagenes. Uso la version 5.6.24 de PHP. Gracias a todos los que me puedan colaborar.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de kip
Val: 2.325
Plata
Ha disminuido 1 puesto en PHP (en relación al último mes)
Gráfica de PHP

Crypt de PHP no funciona en localhost

Publicado por kip (877 intervenciones) el 20/09/2016 15:03:37
Hola, intenta correr el siguiente codigo en tu servidor local:

1
2
3
4
5
6
7
<?php
if (function_exists('crypt')) {
    echo "La funcion CRYPT existe!.<br />\n";
} else {
    echo "La fucnion CRYPT <b>no</b> existe!.<br />\n";
}
?>

De esa forma verificas que exista la funcion crypt en tu localhost.

Nos cuentas

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
2
Comentar
Imágen de perfil de Luis Alejandro

Crypt de PHP no funciona en localhost

Publicado por Luis Alejandro (3 intervenciones) el 20/09/2016 15:14:48
Mil gracias kip! he notado que gracias a tu código la funcion crypt si trabaja, pero lo confuso es que trabaja de una manera en mi localhost y de otra en la nube. Si nos fijamos bien al combinar el $texto y el $salt lo que termina imprimiendo es exactamente el mismo $salt, pero que hace con el $texto? No se porque en un servidor me arroja un resultado y en el otro server otro resultado, estoy muy confundido. Muchas gracias por tu ayuda.

Capture
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de kip
Val: 2.325
Plata
Ha disminuido 1 puesto en PHP (en relación al último mes)
Gráfica de PHP

Crypt de PHP no funciona en localhost

Publicado por kip (877 intervenciones) el 20/09/2016 15:28:25
Quizas el problema radica en que no existe en tu servidor local el tipo de encriptacion BLOWFISH que es la que estas usando, esto dice el manual:

CRYPT_BLOWFISH - Hash con Blowfish con un salt como sigue: "$2a$", "$2x$" o "$2y$", un parámetro de coste de dos dígitos, "$", y 22 caracteres del alfabeto "./0-9A-Za-z". Utilizar caracteres fuera de este rango en el salt causará que crypt() devuelva una cadena de longitud cero. El parámetro de coste de dos dígitos es el logaritmo en base 2 de la cuenta de la iteración del algoritmo hach basado en Blowfish subyacente, y debe estar en el rango 04-31; los valores fuera de este rango causarán que crypt() falle. Las versiones de PHP anteriores a 5.3.7 únicamente admitían "$2a$" como el prefijo para salt: PHP 5.3.7 introdujo los nuevos prefijos para corregir un problema de seguridad en la implementación de Blowfish. Por favor, consulte » este documento para detalles copletos de la corrección de seguridad, pero para resumir, los desarrolladores que se oriente por PHP 5.3.7 y posteriores deberían usar "$2y$" en vez de "$2a$".

Ahora bien ejecuta este codigo:

1
2
3
if (CRYPT_BLOWFISH == 1) {
    echo 'Blowfish:     ' . crypt('rasmuslerdorf', '$2a$07$usesomesillystringforsalt$') . "\n";
}

De esa forma se verifica si existe el modo BLOWFISH en tu servidor local.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de Luis Alejandro

Crypt de PHP no funciona en localhost

Publicado por Luis Alejandro (3 intervenciones) el 20/09/2016 15:59:58
De nuevo gracias Kip por tu ayuda! resulta que el codigo que me pasaste si funciona, y me pude dar cuenta y corrobore ademas con la documentacion de la version 5.6 de PHP, que en esta version la funcion crypt necesita un salt mucho mas largo, lo estoy usando de 26 caracteres, pero resulta que como tu codigo, un salt de 33 caracteres ahora si funciona bien la funcion. Hice la comparacion probandolo local y en a nube y me arrojan el mismo resultado, funciona!. Entonces tener presente, en 5.6 para adelante el salt debe ser con mayor numero de caracteres. Mil gracias

Capture

Capture2
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de kip
Val: 2.325
Plata
Ha disminuido 1 puesto en PHP (en relación al último mes)
Gráfica de PHP

Crypt de PHP no funciona en localhost

Publicado por kip (877 intervenciones) el 20/09/2016 16:14:34
Si, de hecho es esta parte por la que no te funciona:

1
crypt('hardbodyAdmin', '$2a$07$Jape201414l2013201$')

Lo que esta subrayado, si te fijas contiene 17 caracteres y deberia ser mayor o igual a 20 o preferiblemente una lognitud de 22, como el manual lo dice:

22 caracteres del alfabeto "./0-9A-Za-z"

Si te fijas en la imagen que compartiste de tu servidor no local, este relleno con $$$ la parte del string de la salt, pruebalo y te mostrara la misma contraseña que genero aquel servidor:

1
echo crypt('hardbodyAdmin', '$2a$07$Jape201414l2013201$$$');

Saludos!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
2
Comentar
sin imagen de perfil
Val: 729
Bronce
Ha aumentado 1 puesto en PHP (en relación al último mes)
Gráfica de PHP

Crypt de PHP no funciona en localhost

Publicado por Gonzalo (615 intervenciones) el 20/09/2016 18:14:27
has contemplado la posibilidad de usar hash?

echo(hash("md2",$salt));
echo(hash("md2",$texto));

no solo esta el md2, hay varios metodos de encryptacion usando hash.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
-1
Comentar