2011-09-22 16 views
5

Durante una actualización de Zend Server CE 5.1 ​​a Zend Server CE 5.5, PHP también obtuvo una actualización de 5.3.5 a 5.3.8. Después de esta transición, la función de inicio de sesión de una aplicación zend en la que estoy trabajando se rompió de repente.PHP crypt() con sha256 en Zend Server CE 5.5 trunca la sal suministrada

Tratando de depurarlo, parece que la implementación de crypt() no refleja el manual de PHP, o lo he entendido mal. Si me aventurara a adivinar, es lo último.

Estoy usando una sal de 16 caracteres como parte de una sal más grande usando SHA256, que se usa como ejemplo en el manual de PHP.

$password = //string entered at login 
$salt = '$5$rounds=250000$1234abcd5678defg$'; 

Después de que he HASHED la contraseña introducida

$hash = crypt($password, $salt); 

consigo una cadena como esta como valor de retorno:

$5$rounds=250000$1234abcd5678$tI.Oiz.YwWjIwT3K.SLU8SwUZ9J0/odBCkbE6t0igeB 

Lo que me desconcierta es que la sal de 16 caracteres, eso es parte de la parte más grande (1234abcd5678defg arriba), ahora está truncado a 12 caracteres.

¿Esto es como se pretendía? La función crypt() también parece devolver resultados diferentes ahora que antes, ¿es eso lo usual entre las versiones de PHP? Nada en el changelog sugiere cambios radicales a los algoritmos de encriptación.

+0

Bueno, ha habido un error importante en 5.3.7 con respecto a la función crypt. Se ha solucionado unos días después en 5.3.8. Tal vez deberías buscar publicaciones sobre eso, ver si eso puede estar relacionado con tu problema. Y revise dos veces que no tiene PHP 5.3.7, sino 5.3.8. –

+0

Según phpinfo() y la salida en terminal cuando se ejecuta php o php-cli dice que es el zend optimizado php 5.3.8. La fecha de compilación es 24 aug, por lo que parece ser correcta. El último compromiso con crypt_sha256.c, que parece haberse incluido en 5.3.7 fue que resolvió un problema con el truncamiento de la sal. El mismo problema que tengo, pero se suponía que había sido reparado. Estoy buscando un canal apropiado para posibles errores en PHP antes de presentar un informe de error adecuado. – Patrick

+0

Creo que leí que el problema era que la cripta solo devolvía la sal, no los datos encriptados, sino solo cuando se usa MD5. –

Respuesta

2

Esta es la respuesta que he recibido de Zend:

Gracias por los comentarios. El problema que informaste se considera un error. Los desarrolladores proporcionarán una solución, que se incluirá en una de las próximas versiones del producto.

Cuestiones relacionadas