Foros del Web » Programando para Internet » PHP »

Encriptacion MD5 para mi login web

Estas en el tema de Encriptacion MD5 para mi login web en el foro de PHP en Foros del Web. Buenos dias gente de forosdelweb, hoy hice un cambio en mi web la cual estoy haciendo para un servidor de juegos multiplayer. En este caso ...
  #1 (permalink)  
Antiguo 14/07/2015, 10:03
 
Fecha de Ingreso: julio-2014
Ubicación: Montevideo
Mensajes: 78
Antigüedad: 10 años
Puntos: 2
Encriptacion MD5 para mi login web

Buenos dias gente de forosdelweb, hoy hice un cambio en mi web la cual estoy haciendo para un servidor de juegos multiplayer. En este caso uso 3 cosas conectadas a la misma db.

- El servidor de SAMP (Juego Multijugador)
- La web en PHP
- Foro SMF

Hice que el juego guardara las cuentas q son creadas en la misma tabla del foro smf, de manera que con solo crear 1 cuenta en el servidor ya se cree en el foro tambien.
Hasta aqui todo bien, le indique al servidor que guarde las contraseñas en MD5 para que el foro las pueda leer, con el foro anda todo genial, ahora el tema es que en la pagina web tengo una especie de UCP que me da estadisticas de los jugadores, cuando intente modificar el login de la web para que usara la base del smf me dio problemas ya que no consigo que lea la contraseña encriptada en MD5

Les dejo el codigo del login por aca
Código PHP:
<?php


include("config.php"); //including our config.php where is connecting to mysql...
session_start(); //starting session for profile.php (Dunno how to explain better) look little down
error_reporting(0); //without this we will always get some stupid notice that variable isn't defined....

$submit $_POST['submit']; //variable for submit button, in this variable we save button that player press in <input type='submit' name="submit" value='Login' />....
$username sanitize($_POST['username']); //variable for username, in this variable we save text that user type in <input type="text" name="username"....
$password sanitize($_POST['password']); //variable for password, in this variable we save text that user type in <input type="password" name="password"....

if($submit//if he press submit button
{    
    if(
$username && $password//if he type both of username and password not just one of them
    
{
        
$query mysql_query("SELECT member_name, passwd FROM smf_members WHERE member_name = '$username'"); //selecting user name and password, change it to your field names,  chage users to your table name, $username means username that he type...
        
if(mysql_num_rows($query) == 1//if user exists
        
{
            while(
$row mysql_fetch_assoc($query)) //loop thought table that we select in mysql_query
            
{
                
$dbusername $row['member_name']; //setting dbusername as variable from table, change 'username' to your field!
                
$dbpassword $row['passwd']; //setting dbpassword as variable from table, change 'password' to your field!
            
}
            if(
$username == $dbusername && $password == $dbpassword//if username is same as one from table and if password is the same as one from table...
            
{
                
$_SESSION['username'] = $dbusername//setting session username to one from table, this is useful if you login, that restart your browser and than you go in url where is your profile.php... Anyway this is useful :D
                
echo header('location: mi-cuenta.php'); //redirecting user to his profile page (profile.php)
            
}
            else echo 
"Wrong password!"//else if user type wrong password he will get this...
        
}
        else echo 
"Username doesn't exist!"//if username doesn't exist in table user will get this
    
}
    else echo 
"Type name and password!"//else if user doesn't type all fields he will get this...
}

?> 



<center><form action='entrar.php' method='POST'> 
<input type="text" name="username" value='<?php echo $username?>'/> 
<input type="password" name="password"/> 
<input type='submit' name="submit" value='Login' /> 
</form></center>
Sin encriptacion la contraseña la lee sin problemas pero ahora con la encriptacion MD5 no hay cristiano que lo haga entrar, les agradezco su ayuda. Saludos
  #2 (permalink)  
Antiguo 14/07/2015, 10:15
Avatar de NueveReinas  
Fecha de Ingreso: septiembre-2013
Ubicación: No tan Buenos Aires
Mensajes: 1.101
Antigüedad: 10 años, 10 meses
Puntos: 145
Respuesta: Encriptacion MD5 para mi login web

Yo te diría que no uses MD5 (vulnerable según PHP), y que uses crypt().
__________________
¿Te sirvió la respuesta? Deja un +1
  #3 (permalink)  
Antiguo 14/07/2015, 10:16
Avatar de xfxstudios  
Fecha de Ingreso: junio-2015
Ubicación: Valencia - Venezuela
Mensajes: 2.448
Antigüedad: 9 años, 1 mes
Puntos: 263
Respuesta: Encriptacion MD5 para mi login web

creo que deberia ser algo asi:
Código PHP:
Ver original
  1. $password = sanitize(md5($_POST['password']));
prueba a ver
  #4 (permalink)  
Antiguo 14/07/2015, 10:17
Avatar de Middrel  
Fecha de Ingreso: abril-2005
Mensajes: 835
Antigüedad: 19 años, 2 meses
Puntos: 27
Respuesta: Encriptacion MD5 para mi login web

¿Este código es para ingresar? Si es así...

Supongo que tu contraseña ya está guardada con encriptación de md5, entonces cuando tu tratas de loguearte, ingresas tu contraseña de manera normal, por ejemplo:

en

Código PHP:
$password sanitize($_POST['password']); 
tu ingresaste algo como "miPassword"

y lo comparas con

Código PHP:
$dbpassword $row['passwd']; 
que debería estar encriptada con md5 "m1P4ssw0rd"

pero en ningún momento $password esta siendo encriptado, por ello no existe coincidencia.
  #5 (permalink)  
Antiguo 15/07/2015, 10:52
 
Fecha de Ingreso: diciembre-2014
Ubicación: Madrid
Mensajes: 274
Antigüedad: 9 años, 7 meses
Puntos: 5
Respuesta: Encriptacion MD5 para mi login web

La mejor opción sería el crypt() pero yo prefiero el MD5, que se usa como te dicen en el #2. De todas formas, recuerda que siempre que lo uses deberás poner md5(...) cuando debas usar la clave. Lo que yo hago siempre es crear una nueva variable para mover la clave encriptada, por ejemplo:

Código PHP:
Ver original
  1. $pass2 = md5($pass);
  #6 (permalink)  
Antiguo 15/07/2015, 14:02
Avatar de NueveReinas  
Fecha de Ingreso: septiembre-2013
Ubicación: No tan Buenos Aires
Mensajes: 1.101
Antigüedad: 10 años, 10 meses
Puntos: 145
Respuesta: Encriptacion MD5 para mi login web

Cita:
Iniciado por diegoguerrero Ver Mensaje
La mejor opción sería el crypt() pero yo prefiero el MD5, que se usa como te dicen en el #2. De todas formas, recuerda que siempre que lo uses deberás poner md5(...) cuando debas usar la clave. Lo que yo hago siempre es crear una nueva variable para mover la clave encriptada, por ejemplo:

Código PHP:
Ver original
  1. $pass2 = md5($pass);
Incentivar el uso de MD5 en pleno 2015 me parece una falta de respeto a la seguridad informática. Este hash suele tener altas probabilidades de "ataque por colisión" a través de un simple tunneling, cosa que era ya posible en 2006.

Así que, por favor, OP, no uses MD5 para hashear ninguna contraseña. O simplemente no uses MD5. Ni SHA-1.

Hay alternativas de encriptación simétrica y hasheo más eficientes.
__________________
¿Te sirvió la respuesta? Deja un +1
  #7 (permalink)  
Antiguo 15/07/2015, 14:11
Avatar de xfxstudios  
Fecha de Ingreso: junio-2015
Ubicación: Valencia - Venezuela
Mensajes: 2.448
Antigüedad: 9 años, 1 mes
Puntos: 263
Respuesta: Encriptacion MD5 para mi login web

Cita:
Iniciado por NueveReinas Ver Mensaje
Incentivar el uso de MD5 en pleno 2015 me parece una falta de respeto a la seguridad informática. Este hash suele tener altas probabilidades de "ataque por colisión" a través de un simple tunneling, cosa que era ya posible en [URL="http://cryptography.hyperlink.cz/MD5_collisions.html"]2006[/URL].

Así que, por favor, OP, no uses MD5 para hashear ninguna contraseña. O simplemente no uses MD5. Ni SHA-1.

Hay alternativas de encriptación simétrica y hasheo más eficientes.
como cuales amigo, digo para saber e investigas más sobre ellas
  #8 (permalink)  
Antiguo 15/07/2015, 14:35
Avatar de NueveReinas  
Fecha de Ingreso: septiembre-2013
Ubicación: No tan Buenos Aires
Mensajes: 1.101
Antigüedad: 10 años, 10 meses
Puntos: 145
Respuesta: Encriptacion MD5 para mi login web

Cita:
Iniciado por xfxstudios Ver Mensaje
como cuales amigo, digo para saber e investigas más sobre ellas
En encriptación simétrica (rápida pero 'débil'), tienes algunos algoritmos como AES, Blowfish, IDEA o 3DES.

En encriptación asimétrica (lenta pero muy fuerte) tienes bloques como RSA, DSA, El Gamal... Y por lo general se recomienda aplicarlos sobre SSL/TLS junto a Digital Signatures.

Para hashes hay DES (crypt está basado en DES, y se le puede añadir una salt), SHA-256, SHA-512 y las variables de SHA en DJANGO, y varias más (MySQL, DCC (Windows))...

Cuestión de investigar.
__________________
¿Te sirvió la respuesta? Deja un +1
  #9 (permalink)  
Antiguo 15/07/2015, 14:51
Avatar de xfxstudios  
Fecha de Ingreso: junio-2015
Ubicación: Valencia - Venezuela
Mensajes: 2.448
Antigüedad: 9 años, 1 mes
Puntos: 263
Respuesta: Encriptacion MD5 para mi login web

estuve probando esto y genera unas contraseñas buenas:

Código PHP:
Ver original
  1. $salt = '34a@$#aA9823$';
  2.  
  3. $password = '14186540';
  4.  
  5. $password = hash('sha512', $salt . $password);
  6.  
  7. echo $password;
  #10 (permalink)  
Antiguo 15/07/2015, 14:56
Avatar de NueveReinas  
Fecha de Ingreso: septiembre-2013
Ubicación: No tan Buenos Aires
Mensajes: 1.101
Antigüedad: 10 años, 10 meses
Puntos: 145
Respuesta: Encriptacion MD5 para mi login web

Cita:
Iniciado por xfxstudios Ver Mensaje
estuve probando esto y genera unas contraseñas buenas:

Código PHP:
Ver original
  1. $salt = '34a@$#aA9823$';
  2.  
  3. $password = '14186540';
  4.  
  5. $password = hash('sha512', $salt . $password);
  6.  
  7. echo $password;
El propósito de los hashes no es 'crear contraseñas', para eso existe la encriptación (especialmente simétrica).

El hash se encarga de mantener la integridad de un archivo o cadena de texto.
__________________
¿Te sirvió la respuesta? Deja un +1
  #11 (permalink)  
Antiguo 15/07/2015, 15:14
Avatar de xfxstudios  
Fecha de Ingreso: junio-2015
Ubicación: Valencia - Venezuela
Mensajes: 2.448
Antigüedad: 9 años, 1 mes
Puntos: 263
Respuesta: Encriptacion MD5 para mi login web

en este caso seria algo como esto;
Código PHP:
Ver original
  1. function crypt_blowfish_bydinvaders($password, $digito = 7) {
  2. $set_salt = './1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz';
  3. $salt = sprintf('$2a$%02d$', $digito);
  4. for($i = 0; $i < 22; $i++)
  5. {
  6.     $salt .= $set_salt[mt_rand(0, 22)];
  7. }
  8. return crypt($password, $salt);
  9. }
  10.  
  11. $password = crypt_blowfish_bydinvaders('141865440');
  12. echo $password;
si no estoy equivocado
  #12 (permalink)  
Antiguo 15/07/2015, 15:18
Avatar de NueveReinas  
Fecha de Ingreso: septiembre-2013
Ubicación: No tan Buenos Aires
Mensajes: 1.101
Antigüedad: 10 años, 10 meses
Puntos: 145
Respuesta: Encriptacion MD5 para mi login web

Muy bien, ahora intenta revertir ese hash con esa salt.
Porque te recuerdo que debes obtener la misma salt (aleatoria) para efectuar un login y así poder comparar el texto plano con el cifrado en la base de datos.

Por eso lo más simple es usar crypt();

De todas formas, si nadie sabe qué hash o encriptación usas, jamás lo podrán quebrar.
__________________
¿Te sirvió la respuesta? Deja un +1
  #13 (permalink)  
Antiguo 15/07/2015, 16:02
Avatar de xfxstudios  
Fecha de Ingreso: junio-2015
Ubicación: Valencia - Venezuela
Mensajes: 2.448
Antigüedad: 9 años, 1 mes
Puntos: 263
Respuesta: Encriptacion MD5 para mi login web

man esta funciona revisala y me dices:

con este ecripto el pass y registro al usuario:
Código PHP:
Ver original
  1. $db = new MySQLi('127.0.0.1' , 'root' , '' , 'pase');
  2.  
  3. if($_GET['user']==""){
  4.     $msg = "";
  5. }else if($_GET['pass']==""){
  6.     $msg = "";
  7. }else {
  8.    
  9.     //$salt = '4a@$#aA9823$';
  10. //  $password = $_GET['pass'];
  11. // 
  12. //  $password = hash('sha512', $salt . $password);
  13. //
  14.  
  15. //encripto la contraseña enviada
  16. $nombre = $_GET['user'];
  17. $password = $_GET['pass'];
  18.  
  19. // Validar que $nombre esté disponible, que si contenga
  20. // un rango de letras, numeros, etc etc.. y luego:
  21.  
  22. // Generamos un salt aleatoreo, de 22 caracteres para Bcrypt
  23. $salt = substr(base64_encode(openssl_random_pseudo_bytes('30')), 0, 22);
  24.  
  25. // A Crypt no le gustan los '+' así que los vamos a reemplazar por puntos.
  26. $salt = strtr($salt, array('+' => '.'));
  27.  
  28. // Generamos el hash
  29. $hash = crypt($password, '$2y$10$' . $salt);
  30.  
  31.  
  32. //cargo las variables
  33. $user = $nombre;
  34. $pass_final = $hash;
  35.  
  36. //inserto los datos
  37. $inserta = $db->query("INSERT INTO datos (user,pass) VALUES ('$user' , '$pass_final')");
  38. if($inserta){
  39.     $msg = "Usuario registrado";
  40. } else {
  41.     $msg = "No se registro el usuario";
  42. }
  43. }

cuando se van a loguear con este verifico que el pas sea el mismo:
Código PHP:
Ver original
  1. if (crypt($password, $row_pass['pass']) == $row_pass['pass'])
  2.     echo 'El usuario ha sido autenticado correctamente';
  3. else
  4.     die('Mal Password');
  #14 (permalink)  
Antiguo 15/07/2015, 18:07
 
Fecha de Ingreso: julio-2014
Ubicación: Montevideo
Mensajes: 78
Antigüedad: 10 años
Puntos: 2
Respuesta: Encriptacion MD5 para mi login web

Gracias a todos, pero nadie responde mi pregunta concretamente, necesito usar MD5 si o si porque es la misma que usa el SMF forum y el servidor de juegos. Pero ya probe con md5() en sanitize password pero no funciono, me seguia diciendo contraseña incorrecta. A alguien se le ocurre algo? o me puede pasar un login con md5 que muestre 1 dato cualquiera al loguearte asi lo tomo como ejemplo
  #15 (permalink)  
Antiguo 15/07/2015, 18:25
Avatar de xfxstudios  
Fecha de Ingreso: junio-2015
Ubicación: Valencia - Venezuela
Mensajes: 2.448
Antigüedad: 9 años, 1 mes
Puntos: 263
Respuesta: Encriptacion MD5 para mi login web

encriptala despues que la recibas algo asi:
Código PHP:
Ver original
  1. $pass1 = sanitize($_POST['password']);
  2.  
  3. $password = md5($pass1);
  #16 (permalink)  
Antiguo 15/07/2015, 18:28
Avatar de xfxstudios  
Fecha de Ingreso: junio-2015
Ubicación: Valencia - Venezuela
Mensajes: 2.448
Antigüedad: 9 años, 1 mes
Puntos: 263
Respuesta: Encriptacion MD5 para mi login web

cambia:
Código PHP:
Ver original
  1. $submit = $_POST['submit']; //variable for submit button, in this variable we save button that player press in <input type='submit' name="submit" value='Login' />....
  2. $username = sanitize($_POST['username']); //variable for username, in this variable we save text that user type in <input type="text" name="username"....
  3. $password = sanitize($_POST['password']); //variable for password, in this variable we save text that user type in <input type="password" name="password"....

por:
Código PHP:
Ver original
  1. $submit = $_POST['submit']; //variable for submit button, in this variable we save button that player press in <input type='submit' name="submit" value='Login' />....
  2. $username = sanitize($_POST['username']); //variable for username, in this variable we save text that user type in <input type="text" name="username"....
  3. $pass1 = sanitize($_POST['password']); //variable for password, in this variable we save text that user type in <input type="password" name="password"....
  4.  
  5. $password = md5($pass1);
  #17 (permalink)  
Antiguo 16/07/2015, 02:17
 
Fecha de Ingreso: enero-2015
Ubicación: Lleida
Mensajes: 27
Antigüedad: 9 años, 6 meses
Puntos: 0
Respuesta: Encriptacion MD5 para mi login web

Te recomiendo que uses sha1 en vez de md5, es la mas potente encriptación hasta ahora.
Por otro lado es simple, lo que debes hacer es:
1-. Cuando se registra, coges la pass, la encriptas y la guardas a la bd encriptada.
2-. Cuando se logea, coges la pass la encriptas y la comparas con la contraseña ya encriptada que esta en la bd, si son iguales significara que la contraseña es la misma si no son iguales es diferente.

Espero poderte a ver ayudado!

PD: cuando hayas sacado el SAMP a la luz, envíame un privado con datos hombre, que siempre me ha gustado ese.
  #18 (permalink)  
Antiguo 16/07/2015, 05:35
Avatar de xfxstudios  
Fecha de Ingreso: junio-2015
Ubicación: Valencia - Venezuela
Mensajes: 2.448
Antigüedad: 9 años, 1 mes
Puntos: 263
Respuesta: Encriptacion MD5 para mi login web

por esto:
Cita:
Gracias a todos, pero nadie responde mi pregunta concretamente, necesito usar MD5 si o si porque es la misma que usa el SMF forum y el servidor de juegos. Pero ya probe con md5() en sanitize password pero no funciono, me seguia diciendo contraseña incorrecta. A alguien se le ocurre algo? o me puede pasar un login con md5 que muestre 1 dato cualquiera al loguearte asi lo tomo como ejemplo
solo realiza esto:
Cita:
Iniciado por xfxstudios Ver Mensaje
encriptala despues que la recibas algo asi:
Código PHP:
Ver original
  1. $pass1 = sanitize($_POST['password']);
  2.  
  3. $password = md5($pass1);
  #19 (permalink)  
Antiguo 16/07/2015, 08:37
Avatar de NueveReinas  
Fecha de Ingreso: septiembre-2013
Ubicación: No tan Buenos Aires
Mensajes: 1.101
Antigüedad: 10 años, 10 meses
Puntos: 145
Respuesta: Encriptacion MD5 para mi login web

Cita:
Iniciado por w0nk Ver Mensaje
Te recomiendo que uses sha1 en vez de md5, es la mas potente encriptación hasta ahora.


SHA-1 no es una forma de encriptación, es un hash. Y tampoco es "la más potente", es vulnerable a ataques por fuerza bruta.
AES, que sí es un sistema de encriptación, es de los más potentes.
__________________
¿Te sirvió la respuesta? Deja un +1

Etiquetas: encriptacion, login, md5, mysql, select, sql, tabla, variable
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 23:26.