Foros del Web » Programando para Internet » PHP »

Encriptar contraseña

Estas en el tema de Encriptar contraseña en el foro de PHP en Foros del Web. Hola, tengo un sistema de registro de usuarios, quiero que cuando el usuario se registre, su contraseña quede encriptada para tener mas seguridad en el ...
  #1 (permalink)  
Antiguo 29/06/2011, 11:08
 
Fecha de Ingreso: octubre-2008
Ubicación: Colombia
Mensajes: 451
Antigüedad: 16 años, 2 meses
Puntos: 2
Encriptar contraseña

Hola, tengo un sistema de registro de usuarios, quiero que cuando el usuario se registre, su contraseña quede encriptada para tener mas seguridad en el sistema y que el login pueda reconocer esa contraseña encriptada.

Alguien me podría decir como hacer esto, he buscado en la red y no dan respuestas concisas.

Es un sistema que tengo en php y maysql y quiero saber como encriptar los datos con php
__________________
Desarrollo de Aplicaciones de Escritorio, Sitios Web, Audio y Video en SISGUS
  #2 (permalink)  
Antiguo 29/06/2011, 11:30
Avatar de repara2  
Fecha de Ingreso: septiembre-2010
Ubicación: München
Mensajes: 2.445
Antigüedad: 14 años, 3 meses
Puntos: 331
Respuesta: Encriptar contraseña

Puedes guardar la contrasena con md5, es muy fácil:

http://de2.php.net/manual/es/function.md5.php

Salu2
__________________
Fere libenter homines, id quod volunt, credunt.
  #3 (permalink)  
Antiguo 29/06/2011, 13:11
 
Fecha de Ingreso: octubre-2008
Ubicación: Colombia
Mensajes: 451
Antigüedad: 16 años, 2 meses
Puntos: 2
Respuesta: Encriptar contraseña

Podrias ser mas expecífico por favor, donde implemento ese ejemplo que me estás dando ahi?
__________________
Desarrollo de Aplicaciones de Escritorio, Sitios Web, Audio y Video en SISGUS
  #4 (permalink)  
Antiguo 29/06/2011, 15:00
Avatar de repara2  
Fecha de Ingreso: septiembre-2010
Ubicación: München
Mensajes: 2.445
Antigüedad: 14 años, 3 meses
Puntos: 331
Respuesta: Encriptar contraseña

Claro que sí.
Cualquier string puede encriptarse en md5() de esta manera.

Código PHP:
Ver original
  1. $var = "Hola";
  2. $var_encript = md5($var);

Ahora $var_ecript es una cadena de 32 char. md5() convierte cualquier cosa que le pases en un char de 32 incluso una cadena vacía.

Ahora tienes dos escenarios posibles, registro y login.
En el registro del usuario, el usuario escribirá en un form usuario y contrasena.
Da igual qué contrasena haya escrito, tú insertas en la DB, por ejemplo:

Código MySQL:
Ver original
  1. INSERT INTO USERS user = "$user", password =".md5($password).";

Si miras la db, verás que en el campo constrasena tienes un char de 32, da igual lo que el usuario haya escrito. Si ha escrito "pepe", md5() te insertará la cadena encriptada. En registro no hay nada mas.

Al hacer login de usuario, normalmente tu haces algo así:
1. El usuario inserta user y password en un formulario
2. Tu consultas la Db con algo asl

Código MySQL:
Ver original
  1. SELECT * FROM USER WHERE USERNAME = $user AND PASSWORD = $password;
3. Pero, a partir de ahora, si has guardado la contrasena encriptada, no tienes que consultar si el campo password es IGUAL a lo que pone el usuario, sino que tienes que consultar que el campo password es igual al md5() de lo que pone el usuario:

Código MySQL:
Ver original
  1. SELECT * FROM USER WHERE USERNAME = $user AND PASSWORD = md5($password);

Recuerda que md5() no puede desencriptarse, es decir, tu NO sabrás las constrasenas de los usuarios. Si la pierden tendrás que resetearlas.
Otra cosa, si tu sistema es comercial o guardas información de usuarios y trabajas en un server compartido o no privado, es un requerimiento legal que las passwords estén encriptdas. además de una buena pŕactica.
Si pones un poco de código será mas facil ayudarte. Espero que te sirva, salu2

PD: perdona por la "enie" y los acentos pero tengo un teclado alemán!
__________________
Fere libenter homines, id quod volunt, credunt.
  #5 (permalink)  
Antiguo 30/06/2011, 09:19
 
Fecha de Ingreso: octubre-2008
Ubicación: Colombia
Mensajes: 451
Antigüedad: 16 años, 2 meses
Puntos: 2
Respuesta: Encriptar contraseña

Bueno gracias por tu mensaje, me has aclarado mucho más, como me pides codigo aqui te mando el que utilizo para procesar el registro de usuarios:

Código PHP:
Ver original
  1. <?php
  2. //print_r($_POST);
  3. require_once("conec.php");
  4. $id= $_POST['id'];
  5. $username= $_POST['username'];
  6. $password= $_POST['password'];
  7. $fecha= $_POST['fecha'];
  8.  
  9. mysql_query("INSERT INTO login(id, username, password, fecha) VALUES ('$id', '$username', '$password', now())");
  10. //$sql=("insert into usuario values ('$documento', '$nombres', '$apellidos')");
  11. //echo $sql;
  12. $res=mysql_query($sql,$con);
  13. header("Location: newuser.php?m=1");
  14. ?>

Y para el login utilizo este:

Código PHP:
Ver original
  1. <?php
  2.  
  3.  
  4.   require 'conec.php';
  5.  
  6.   if ($_POST['username']) {
  7. //Comprobacion del envio del nombre de usuario y password
  8. $username=$_POST['username'];
  9. $password=$_POST['password'];
  10. if ($password==NULL) {
  11. echo "Password Invalido";
  12. }else{
  13. $query = mysql_query("SELECT username,password FROM login WHERE username = '$username'") or die(mysql_error());
  14. $data = mysql_fetch_array($query);
  15. if($data['password'] != $password) {
  16. echo "<b><font color='#FF0000'>Datos Incorrectos. Por Favor Intenta De Nuevo.</font></b>";
  17. }else{
  18. $query = mysql_query("SELECT username,password FROM login WHERE username = '$username'") or die(mysql_error());
  19. $row = mysql_fetch_array($query);
  20. $_SESSION["s_username"] = $row['username'];
  21. header("location: index.php");
  22. echo "Bienvenido <b>".$_SESSION['s_username']."</b> <a href=\"logout.php\">Cerrar Sesion</a>";
  23. }
  24. }
  25. }  
  26. ?>

Espero tu colaboracion
__________________
Desarrollo de Aplicaciones de Escritorio, Sitios Web, Audio y Video en SISGUS
  #6 (permalink)  
Antiguo 30/06/2011, 09:24
Avatar de Eleazan  
Fecha de Ingreso: abril-2008
Ubicación: Ibiza
Mensajes: 1.879
Antigüedad: 16 años, 8 meses
Puntos: 326
Respuesta: Encriptar contraseña

Cambia, en los dos, esta línea
Código PHP:
$password=$_POST['password']; 
por:
Código PHP:
$password=md5($_POST['password']); 
  #7 (permalink)  
Antiguo 30/06/2011, 09:37
Avatar de JDEM  
Fecha de Ingreso: octubre-2008
Ubicación: www....
Mensajes: 154
Antigüedad: 16 años, 2 meses
Puntos: 8
Respuesta: Encriptar contraseña

Saludos amigo,

Yo personalmente te recomiendo hacer la encriptacion desde javascript ya que cuando envies el formulario va viajar encriptada, asi si capturan tus datos no robaran el pass (o por lo menos asi lo hago yo), en la web hay gran cantidad de informacion sobre encriptacion es cosa de querer leer.
__________________
Visitanos http://www.nestsystems.com.ve, mucho mas que solo paginas web.
  #8 (permalink)  
Antiguo 30/06/2011, 09:37
 
Fecha de Ingreso: octubre-2008
Ubicación: Colombia
Mensajes: 451
Antigüedad: 16 años, 2 meses
Puntos: 2
Respuesta: Encriptar contraseña

Excelente amigos repara2 y Eleazan, funcionó correctamente, que forma tan sencilla de explicar las cosas. Cuando implementé el cambio los usuarios que tenia guardados no me los reconocía el sistema, pero les cambié la contraseña por phpmyadmin en modo md5 y las tomo tambien.

Muchas gracias Dios los bendiga.

Una dudo, ahora mi sistema es mas seguro? o tendria que implementar algo mas para la seguridad?
__________________
Desarrollo de Aplicaciones de Escritorio, Sitios Web, Audio y Video en SISGUS
  #9 (permalink)  
Antiguo 30/06/2011, 09:52
Avatar de Eleazan  
Fecha de Ingreso: abril-2008
Ubicación: Ibiza
Mensajes: 1.879
Antigüedad: 16 años, 8 meses
Puntos: 326
Respuesta: Encriptar contraseña

Cita:
Iniciado por karenlorenadg Ver Mensaje
Excelente amigos repara2 y Eleazan, funcionó correctamente, que forma tan sencilla de explicar las cosas. Cuando implementé el cambio los usuarios que tenia guardados no me los reconocía el sistema, pero les cambié la contraseña por phpmyadmin en modo md5 y las tomo tambien.

Muchas gracias Dios los bendiga.

Una dudo, ahora mi sistema es mas seguro? o tendria que implementar algo mas para la seguridad?
Podrías implementar lo que dice JDEM ;)
  #10 (permalink)  
Antiguo 30/06/2011, 11:17
 
Fecha de Ingreso: octubre-2008
Ubicación: Colombia
Mensajes: 451
Antigüedad: 16 años, 2 meses
Puntos: 2
Respuesta: Encriptar contraseña

JEDEM, Como sería ese ejemplo que tu expones? tienes el codigo que me puedas facilitar?
__________________
Desarrollo de Aplicaciones de Escritorio, Sitios Web, Audio y Video en SISGUS
  #11 (permalink)  
Antiguo 30/06/2011, 11:43
Avatar de JDEM  
Fecha de Ingreso: octubre-2008
Ubicación: www....
Mensajes: 154
Antigüedad: 16 años, 2 meses
Puntos: 8
Respuesta: Encriptar contraseña

No me gusta por codigos creo que la mejor manera de aprender es cometiendo nuestros errores, mejor te dejo este enlaces http://pajhome.org.uk/crypt/md5/ hay vas a encontrar todo lo necesario...

Ahora si publicas algun error que tengas en el codigo cool, Exito....
__________________
Visitanos http://www.nestsystems.com.ve, mucho mas que solo paginas web.

Etiquetas: encriptacion, encriptar, mysl
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 01:57.