Foros del Web » Programando para Internet » PHP »

Inconveniente con hash de PHP

Estas en el tema de Inconveniente con hash de PHP en el foro de PHP en Foros del Web. Hola amigos. Al ver el manual de PHP descargué la librería compatible a la versión que dispongo (5.3.28) para el hashing pero tiene errores. Solo ...
  #1 (permalink)  
Antiguo 03/12/2014, 10:52
 
Fecha de Ingreso: abril-2012
Ubicación: Argentina
Mensajes: 215
Antigüedad: 12 años
Puntos: 2
Inconveniente con hash de PHP

Hola amigos. Al ver el manual de PHP descargué la librería compatible a la versión que dispongo (5.3.28) para el hashing pero tiene errores. Solo son 2 archivos.

version_test.php:

"Hay un error de sintaxis en la línea 5. Es posible que las sugerencias para el código no funcionen hasta que resuelva este error".

Código PHP:
Ver original
  1. <?php
  2.  
  3. require "lib/password.php";
  4.  
  5. echo "Test for functionality of compat library: " . (PasswordCompat\binary\check() ? "Pass" : "Fail");
  6. echo "\n";
  7. ?>


password.php:

"Hay un error de sintaxis en la línea 10. Es posible que las sugerencias para el código no funcionen hasta que resuelva este error".

Código PHP:
Ver original
  1. <?php
  2. /**
  3.  * A Compatibility library with PHP 5.5's simplified password hashing API.
  4.  *
  5.  * @author Anthony Ferrara <[email protected]>
  6.  * @license http://www.opensource.org/licenses/mit-license.html MIT License
  7.  * @copyright 2012 The Authors
  8.  */
  9.  
  10. namespace {
  11.  
  12.     if (!defined('PASSWORD_BCRYPT')) {
  13.         /**
  14.          * PHPUnit Process isolation caches constants, but not function declarations.
  15.          * So we need to check if the constants are defined separately from
  16.          * the functions to enable supporting process isolation in userland
  17.          * code.
  18.          */
  19.         define('PASSWORD_BCRYPT', 1);
  20.         define('PASSWORD_DEFAULT', PASSWORD_BCRYPT);
  21.         define('PASSWORD_BCRYPT_DEFAULT_COST', 10);
  22.     }
  23.  
  24.     if (!function_exists('password_hash')) {
  25.  
  26.         /**
  27.          * Hash the password using the specified algorithm
  28.          *
  29.          * @param string $password The password to hash
  30.          * @param int    $algo     The algorithm to use (Defined by PASSWORD_* constants)
  31.          * @param array  $options  The options for the algorithm to use
  32.          *
  33.          * @return string|false The hashed password, or false on error.
  34.          */
  35.         function password_hash($password, $algo, array $options = array()) {
  36.             if (!function_exists('crypt')) {
  37.                 trigger_error("Crypt must be loaded for password_hash to function", E_USER_WARNING);
  38.                 return null;
  39.             }
  40.             if (is_null($password) || is_int($password)) {
  41.                 $password = (string) $password;
  42.             }
  43.             if (!is_string($password)) {
  44.                 trigger_error("password_hash(): Password must be a string", E_USER_WARNING);
  45.                 return null;
  46.             }
  47.             if (!is_int($algo)) {
  48.                 trigger_error("password_hash() expects parameter 2 to be long, " . gettype($algo) . " given", E_USER_WARNING);
  49.                 return null;
  50.             }
  51.             $resultLength = 0;
  52.             switch ($algo) {
  53.                 case PASSWORD_BCRYPT:
  54.                     $cost = PASSWORD_BCRYPT_DEFAULT_COST;
  55.                     if (isset($options['cost'])) {
  56.                         $cost = $options['cost'];
  57.                         if ($cost < 4 || $cost > 31) {
  58.                             trigger_error(sprintf("password_hash(): Invalid bcrypt cost parameter specified: %d", $cost), E_USER_WARNING);
  59.                             return null;
  60.                         }
  61.                     }
  62.                     // The length of salt to generate
  63.                     $raw_salt_len = 16;
  64.                     // The length required in the final serialization
  65.                     $required_salt_len = 22;
  66.                     $hash_format = sprintf("$2y$%02d$", $cost);
  67.                     // The expected length of the final crypt() output
  68.                     $resultLength = 60;
  69.                     break;
  70.                 default:
  71.                     trigger_error(sprintf("password_hash(): Unknown password hashing algorithm: %s", $algo), E_USER_WARNING);
  72.                     return null;
  73.             }
  74.             $salt_requires_encoding = false;
  75.             if (isset($options['salt'])) {
  76.                 switch (gettype($options['salt'])) {
  77.                     case 'NULL':
  78.                     case 'boolean':
  79.                     case 'integer':
  80.                     case 'double':
  81.                     case 'string':
  82.                         $salt = (string) $options['salt'];
  83.                         break;
  84.                     case 'object':
  85.                         if (method_exists($options['salt'], '__tostring')) {
  86.                             $salt = (string) $options['salt'];
  87.                             break;
  88.                         }
  89.                     case 'array':
  90.                     case 'resource':
  91.                     default:
  92.                         trigger_error('password_hash(): Non-string salt parameter supplied', E_USER_WARNING);
  93.                         return null;
  94.                 }
  95.  ...

¿Qué podrá estar mal?
  #2 (permalink)  
Antiguo 03/12/2014, 11:12
Avatar de hhs
hhs
Colaborador
 
Fecha de Ingreso: junio-2013
Ubicación: México
Mensajes: 2.995
Antigüedad: 10 años, 9 meses
Puntos: 379
Respuesta: Inconveniente con hash de PHP

No lo mencionas pero supongo que estas queriendo usar la libreria de ircmaxell. Si es asi de donde descargaste los fuentes ?
__________________
Saludos
About me
Laraveles
A class should have only one reason to change.
  #3 (permalink)  
Antiguo 03/12/2014, 11:27
 
Fecha de Ingreso: abril-2012
Ubicación: Argentina
Mensajes: 215
Antigüedad: 12 años
Puntos: 2
Respuesta: Inconveniente con hash de PHP

Exactamente amigo. Del mismo manual de PHP:
http://es.php.net/manual/es/faq.passwords.php.

No se porque tiene esos errores.
Necesito usarlas.
  #4 (permalink)  
Antiguo 03/12/2014, 11:44
Avatar de hhs
hhs
Colaborador
 
Fecha de Ingreso: junio-2013
Ubicación: México
Mensajes: 2.995
Antigüedad: 10 años, 9 meses
Puntos: 379
Respuesta: Inconveniente con hash de PHP

Publica exactamente los errores sin traducción ?
__________________
Saludos
About me
Laraveles
A class should have only one reason to change.
  #5 (permalink)  
Antiguo 03/12/2014, 11:49
 
Fecha de Ingreso: abril-2012
Ubicación: Argentina
Mensajes: 215
Antigüedad: 12 años
Puntos: 2
Respuesta: Inconveniente con hash de PHP

Además de escribir en el primer post el error de línea de cada archivo.

Creí que era el cierre de php "?>" porque estaba ausente en cada página.

Tengo dudas de este tipo de líneas:
Cita:
PasswordCompat\binary\_strlen($buffer);
Porque si es la ubicación de ciertos directorios, al descargar la librería, no hay nada parecido.
  #6 (permalink)  
Antiguo 03/12/2014, 12:40
Avatar de hhs
hhs
Colaborador
 
Fecha de Ingreso: junio-2013
Ubicación: México
Mensajes: 2.995
Antigüedad: 10 años, 9 meses
Puntos: 379
Respuesta: Inconveniente con hash de PHP

Cita:
Iniciado por mikehove Ver Mensaje
Además de escribir en el primer post el error de línea de cada archivo.

Creí que era el cierre de php "?>" porque estaba ausente en cada página.

Tengo dudas de este tipo de líneas:


Porque si es la ubicación de ciertos directorios, al descargar la librería, no hay nada parecido.
Esta usando namespace para empaquetar el nombre de la función y no tener conflictos con el nombre que es el mismo que usa PHP 5.5.
Para usar la función solo tienes que hacer un require_once en donde tienes el archivo password.php y llamar a password_hash como lo indica la documentación.
Hiciste la instalación con composer ?
__________________
Saludos
About me
Laraveles
A class should have only one reason to change.
  #7 (permalink)  
Antiguo 03/12/2014, 13:02
 
Fecha de Ingreso: abril-2012
Ubicación: Argentina
Mensajes: 215
Antigüedad: 12 años
Puntos: 2
Respuesta: Inconveniente con hash de PHP

Disculpame Hhs. Pero no hice la instalación.

¿Desde dónde la puedo hacer? Por favor

Lo único que hice fue descargar la carpeta que contenía algunos archivos:
  #8 (permalink)  
Antiguo 03/12/2014, 13:45
 
Fecha de Ingreso: abril-2012
Ubicación: Argentina
Mensajes: 215
Antigüedad: 12 años
Puntos: 2
Respuesta: Inconveniente con hash de PHP

Ahora estoy viendo que es... lo voy a reinstalar de esa forma.
  #9 (permalink)  
Antiguo 03/12/2014, 13:55
 
Fecha de Ingreso: abril-2012
Ubicación: Argentina
Mensajes: 215
Antigüedad: 12 años
Puntos: 2
Respuesta: Inconveniente con hash de PHP

¿Me aconsejas que lo instale con con Composer?
  #10 (permalink)  
Antiguo 03/12/2014, 15:16
Avatar de hhs
hhs
Colaborador
 
Fecha de Ingreso: junio-2013
Ubicación: México
Mensajes: 2.995
Antigüedad: 10 años, 9 meses
Puntos: 379
Respuesta: Inconveniente con hash de PHP

Lo mejor es que cambies a un hosting que cuente con la 5.5 por lo menos, ya que la versión 5.3 ya no tendrá soporte ya que termino su ciclo de vida: http://php.net/archive/2014.php#id2014-08-14-1
__________________
Saludos
About me
Laraveles
A class should have only one reason to change.

Etiquetas: Ninguno
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 22:53.