2011-12-28 10 views
5

Estoy trabajando en un script y necesito guardar las contraseñas. Para fines de desarrollo, he estado usando la función crypt() porque era fácil y estaba disponible. Ahora que ya casi terminé, quiero reemplazarlo por algo un poco mejor y más consistente.Alternativa a crypt()

Algunas de las preocupaciones que tengo son:

  • no todos los algoritmos son compatibles con todos los sistemas
  • veces la sal se agrega como prefijo al resultado (parece como un problema de seguridad)

Quiero algo que funcione con PHP 4.3+.

¿Hay algo disponible, o debería seguir con crypt()? Pensé en usar md5(md5($password).$salt). Gracias por la visión.

+5

¿Desea algo "mejor que' crypt() '" y propone doble md5? – ceejayoz

+0

He trabajado en proyectos donde se usaron md5 y sha1 (no juntos). Más información en sha1: http://us.php.net/sha1 –

+0

su cifrado confuso (2 vías) con hashing (1 camino) –

Respuesta

6

No hay nada malo con crypt

Si el servidor no lo soporta, utilice otro servidor.

Debe NUNCA uso MD5 para las contraseñas hashing (o incluso SHA1 para el caso)

uso ya sea bcrypt (el método de pez globo de crypt) o PBKDF2

No es una implementación de PBKDF2 aquí: Encrypting Passwords with PHP for Storage Using the RSA PBKDF2 Standard

Más información sobre por qué y cómo aquí:

+0

El problema es que estoy tratando de hacer que esto funcione para otros usuarios donde no tengo control de sus sistemas y no todos los métodos crypt están disponibles, de hecho blowfish no está en el mío, aunque tiene sha512, mientras que otro servidor en el que juego es todo lo contrario. – steveo225

+0

@ steveo225 bien si quiere sacrificar la seguridad por la portabilidad, lo siento por sus clientes. – Petah

+0

¿Qué pasa con md5? He visto muchos otros sistemas de script conocidos usarlo, como vBulletin? – steveo225

4

En primer lugar: agregar el prefijo a la sal no es un problema de seguridad. Tener una sal por contraseña es una gran ventaja, y está perfectamente bien que se almacene al lado del pw.

Ahora: siempre que no transporte hashes de contraseñas de un sistema a otro, y este último no sea compatible con el algoritmo predeterminado del primero, nada malo pasará por definición. Desde PHP 5.3 hay algoritmos incorporados en PHP como Blowfish, que están garantizados para estar disponibles.