Pregunta

Estuve aquí ayer y tiene algunas realmente grandes respuestas. Tomé lo que tengo y poner juntos, lo que creo que será un algoritmo bastante seguro. Estoy teniendo un problema con pez globo con un bucle que genera la sal.

Estoy usando caracteres base64 y un bucle for para obtener una cadena aleatoria. Quiero aprovechar esta cadena generada y la inserta en la función de encriptación como la sal.

Debido a que la documentación acerca de pez globo es tan escasa y la documentación de PHP en realidad no siquiera lo menciona, yo soy una especie de punzante en la oscuridad aquí.

Lo realmente extraño es que si se ejecuta este código de la forma en que es ahora, será no fallar. Quitar o bien el '$ 2a $ $ 07' desde arriba del bucle for o de la función de encriptación y será intermitentemente encriptará una cadena. Mi comprensión de pez globo es que la cadena cifrada debe comenzar con '$ 2a $ $ 07' y terminan en "$' por lo tanto, la concatenación en la función de cripta. Realmente no necesito la cadena de inicio por encima de la para el bucle y sólo quería deshacerse de él.

También me gustaría una aclaración acerca de la mejor práctica relativa al almacenamiento de la sal al azar, ya sea en la base de datos o almacenando la salida de la función de la cripta en la base de datos?

Ayer, no había ningún código real de ser lanzado alrededor, sólo la discusión. Me gustaría poner un poco de código juntos hoy y tienen algo que es bastante seguro en su lugar. Si alguien puede llegar a un mejor algoritmo, siempre estoy abierto.

$base64 = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';
$salt = '$2a$07$';

for($i=0; $i<60; $i++)
{
    $salt .= $base64[rand(0,63)];
}

return crypt('password', '$2a$07$'.$salt.'$');
¿Fue útil?

Solución

Parece que el carbón no le gusta crypt() + en la sal, y un montón de otros caracteres especiales también (*, % etc). Si filtra hacia fuera que debería funcionar en cada intento (y no hay necesidad de repetir la cadena de ID sal).

Otros consejos

Sé que esta pregunta es la historia prácticamente antigua ahora, pero en beneficio de cualquier persona que lo encuentra mediante la búsqueda en Google, hay una descripción bastante detallada de cómo el bcrypt / EksBlowfish sales de trabajo en la respuesta a esta pregunta:

¿Por qué la cripta / pez globo generar el mismo hash con dos sales diferentes?

La respuesta corta es, como CAF Dicho esto, utiliza un alfabeto compuesto de base 64 [a-zA-Z0-9./], con $ como nulo (0 NO) carácter de terminación / relleno. Si utiliza cualquier carácter fuera de ese rango, o una $ demasiado pronto, o bien error a cabo o no interpretar la totalidad de la sal.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top