2012-06-24 25 views
6

Estoy trabajando en un formulario de registro donde necesito encriptar la contraseña, he escuchado que se me recomienda usar el cifrado Blowfish para contraseñas, ¿Cómo se implementa una encriptación blowfish usando PHP? función crypt()? También, tengo la intención de recuperar la contraseña después de iniciar la sesión.Uso de Blowfish para encriptación con PHP

+0

Eche un vistazo a [esto] (http://www.chilkatsoft.com/p/php_blowfish.asp). –

+1

No debe "encriptar" las contraseñas, pero use una función de hash unidireccional. Ver: [¿Cómo se usa bcrypt para contraseñas hash en PHP?] (Http://stackoverflow.com/q/4795385/911182) – Herbert

+0

Lea también: [¿Cómo puedo almacenar las contraseñas de mis usuarios de forma segura?] (Http://stackoverflow.com/questions/1581610/how-can-i-store-my-users-passwords-safely/1581919#1581919) – Jacco

Respuesta

6

La respuesta corta es utilizar crypt con una sal comenzando con los personajes $ 2a $, dos dígitos cuestan parámetro, $, y 22 dígitos del alfabeto ./0-9A-Za-z. Eso solo funciona en sistemas que admiten el algoritmo de cifrado Blowfish. Sin embargo, PHP 5.3 lo implementa de forma nativa. Ver PHP manual — crypt para más detalles.

Ejemplo:

crypt('rasmuslerdorf', '$2a$07$somesillystringforsalt') 

La cadena de sal activa el algoritmo apropiado. El parámetro de dos dígitos es el logaritmo de base 2 del recuento de iteraciones para el algoritmo de hash subyacente basado en Blowfish y debe estar dentro del rango [04 – 31]. En el ejemplo 07 le dice al algoritmo que use 2 o 128 iteraciones. Cuanto más alto sea este número, más tiempo llevará ejecutar, PERO, en el contexto de las contraseñas de hashing user, que es GOOD.

This answer to a similar question explica con más detalle qué es BCrypt, cómo se relaciona con Blowfish, y por qué debería usarlo. Hay muchos otros related topics here on Stack Overflow.


phpass es un excelente fácil de usar marco de hash, la contraseña que funciona en todos los sistemas, utilizando Blowfish si vale ’ s apoyaron, y cayendo de nuevo a otros algoritmos si ’ no lo es.

4

Nunca debe necesitar blowfish para encriptar una contraseña como esta. El formulario de registro debe ser a través de HTTPS, que manejará la defensa contra un atacante en el cable. La contraseña debe ser hash (nunca cifrado). bcrypt es una buena función hash de contraseña basada en blowfish. Pero hay muchas publicaciones relacionadas con el almacenamiento seguro de contraseñas en SO.

+1

+1 Probablemente debería haber mencionado HTTPS. – Herbert

+0

Después de [vulnerabilidad de Heartbleed] (http://heartbleed.com/), supongo que nada es completamente seguro. – ontananza

Cuestiones relacionadas