password encriptar encriptada desencriptar contraseña con php database

encriptada - ¿Cómo puedo encriptar datos de contraseñas en una base de datos usando PHP?



encriptar y desencriptar php 7 (9)

Desde una visión general de alto nivel: no cifre, hash. Y si puedes, usa BCrypt. Aquí hay un largo artículo que explica por qué BCrypt y por qué hash.

Me estoy conectando a una base de datos MySQL con PHP y el Framework CodeIgniter. Quiero almacenar mis contraseñas encriptadas en la base de datos y me gustaría saber la mejor manera de hacerlo.


Encriptar las contraseñas es una mala idea. Si alguien obtiene su base de datos, es probable que obtengan la clave que usó para encriptar las contraseñas también.

La verdadera solución es hacer hash, salt y luego almacenar las contraseñas. Jeff Atwood tiene una publicación increíble sobre esto: http://www.codinghorror.com/blog/archives/000953.html

Y aquí está uno discutiendo "tablas arcoiris", tablas masivas de palabras con sus sumas MD5: http://www.codinghorror.com/blog/archives/000949.html


Estoy de acuerdo con hash y salazón. No estoy de acuerdo con elegir un hash para todo el sitio. Utilice una sal diferente para cada usuario para evitar ataques de diccionario contra todas sus contraseñas a la vez.


La mejor manera, ya que es fácil y seguro, es usar phpass . Si su instalación PHP tiene Blowfish, usa bcrypt; si no lo hace, usa múltiples pases de md5. De cualquier manera, es más seguro que straight md5 o sha1.

$hasher = new PasswordHash(8, false); // Before storing a password $hash = $hasher->HashPassword($password); // To check a password against a hash if ($hasher->CheckPassword($password, $hash)) // $password and $hash match


Nunca almacene contraseñas. Use un hash de una dirección y almacénelo.


Siempre guardo contraseñas antes de ponerlas en la base de datos, y también el inicio de sesión con contraseña md5sum intenta verificarlas frente a la base de datos. Solo por seguridad, realizo una consulta de selección usando una cláusula where con ID de usuario (nombre de usuario) Y una contraseña md5summed para no recuperar ninguna fila a menos que ambas coincidan.

Además, mysql interanlly usa md5summing en sus contraseñas si necesita un nivel de confianza en este método de ocultación de contraseñas.


Use una función de hashing; MD5 hará bien. No almacene la contraseña, almacene el hash. Luego, para iniciar sesión en los usuarios, cifre la contraseña que ingresaron y compárela con el hash en la base de datos; si los hashes coinciden, son legítimos.

Además, agregue una sal a la contraseña antes de hash it. Esto puede ser tan fácil como agregar una cadena a la contraseña, como su nombre de dominio u otros datos únicos de su aplicación. Esto evita que los piratas informáticos utilicen tablas de arcoíris contra sus valores hash.


hmm, I hash, más de una vez basado en cualquier matemática que me viene a la mente en el momento de escribir el almacenamiento y la validación de contraseñas

A partir de ahora, probablemente utilizaré OpenID tanto como sea posible, aunque tenga una opción real, así que no tengo que hacer ningún almacenamiento de contraseñas. De esa forma puedo dejar las contraseñas a los expertos y los usuarios ya confían en la fiesta.