Foros del Web » Programando para Internet » PHP »

No encuentro sentido a la función md5

Estas en el tema de No encuentro sentido a la función md5 en el foro de PHP en Foros del Web. Hola, me gustaría saber para q sirve la función md5 si una vez que encripto algo jamás sabré lo q pone, ya q es irreversible. ...
  #1 (permalink)  
Antiguo 23/07/2003, 18:33
 
Fecha de Ingreso: julio-2003
Mensajes: 463
Antigüedad: 14 años, 5 meses
Puntos: 0
Pregunta No encuentro sentido a la función md5

Hola, me gustaría saber para q sirve la función md5 si una vez que encripto algo jamás sabré lo q pone, ya q es irreversible. Es q no le veo el sentido a esa función.


Si por ejemplo, encripto una contraseña para un usuario, como voy a saber q la contraseña q introduce un usuario es la suya, si ademas no puedo desencriptar la de la base de datos para compararlas.

Alguién tiene algo que comentar??

Un saludo y gracias.
  #2 (permalink)  
Antiguo 23/07/2003, 18:41
Avatar de Manoloweb  
Fecha de Ingreso: enero-2002
Ubicación: Monterrey
Mensajes: 2.454
Antigüedad: 15 años, 10 meses
Puntos: 5
Pues lo que haces cuando vas a comparar el password a la base de datos es correrle MD5 al dato a comprobar, es decir, se lo aplicas cuando lo guardas y cuando lo consultas...

Asi, si alguien te "roba" la BD, no podrá saber que es lo que está leyendo...
__________________
Manoloweb
  #3 (permalink)  
Antiguo 23/07/2003, 18:44
Avatar de Manoloweb  
Fecha de Ingreso: enero-2002
Ubicación: Monterrey
Mensajes: 2.454
Antigüedad: 15 años, 10 meses
Puntos: 5
Ademas puedes "encriptar" el password desde antes de que salga de la pagina, por decir algo con javascript, así los datos que viajan no contienen el password como tal, sino su md5 (que tambien existe en JS)
__________________
Manoloweb
  #4 (permalink)  
Antiguo 23/07/2003, 18:44
 
Fecha de Ingreso: julio-2003
Mensajes: 463
Antigüedad: 14 años, 5 meses
Puntos: 0
Perdona, pero no te entendí bien...

Es decir, tu dices q se le aplica antes de guardar el dato, y se guarda encriptado no??

Y luego lo lees de la base de datos y se lo vuelves a aplicar a ese dato ya encriptado??

Gracias por tu interés , un saludo.
  #5 (permalink)  
Antiguo 23/07/2003, 18:46
 
Fecha de Ingreso: julio-2003
Mensajes: 463
Antigüedad: 14 años, 5 meses
Puntos: 0
Vale, si viajan encriptados es mas seguro, pero una vez q se almacenen en una tabla, JAMAS volveré a saber lo q pone no??

Un saludo.
  #6 (permalink)  
Antiguo 23/07/2003, 18:47
Avatar de Manoloweb  
Fecha de Ingreso: enero-2002
Ubicación: Monterrey
Mensajes: 2.454
Antigüedad: 15 años, 10 meses
Puntos: 5
No... me refiero al proceso de autenticacion en si...

Tu YA tienes en la BD el dato encriptado, OK?

Ahora pides al usuario su password en un input de un formulario, y cuando lo vas a comprobar, le aplicas md5 a ese dato...

$pwd=md5($_POST["password"]);


select * from tabla where password=$pwd

Estamos?
__________________
Manoloweb
  #7 (permalink)  
Antiguo 23/07/2003, 18:48
Avatar de Manoloweb  
Fecha de Ingreso: enero-2002
Ubicación: Monterrey
Mensajes: 2.454
Antigüedad: 15 años, 10 meses
Puntos: 5
Exactamente... nadie, ni tu, podran saber que el password de tu usuario "El_Macho" era "soymuygay"
__________________
Manoloweb
  #8 (permalink)  
Antiguo 23/07/2003, 18:50
 
Fecha de Ingreso: julio-2003
Mensajes: 463
Antigüedad: 14 años, 5 meses
Puntos: 0
Bien, pero he leio en uno de los mensajes de este foro, que una de las razones de la no-reversibilidad es que para datos diferentes, su encriptación es igual...

Por tanto, el usuario a lo mejor introduce algo q no es la contraseña, pero q su encriptación es igual a la de la tabla no?? y no sería la correcta no??

Corrigeme si el mensaje q he leido es erroneo

Un saludo.
  #9 (permalink)  
Antiguo 23/07/2003, 18:53
Avatar de Manoloweb  
Fecha de Ingreso: enero-2002
Ubicación: Monterrey
Mensajes: 2.454
Antigüedad: 15 años, 10 meses
Puntos: 5
Es correcto... aunque las posibilidades son muuuuuuuuy remotas.

Es posible (no lo se) que el md5 de "px14yo" sea el mismo que el de "estetexto)/%&%$&()(/9889576342938294taltaljdhgfjsdfh"

No se cuantas sean las probabilidades... pero estamos hablando de 32 bits... que es mucho. (aunque no es tanto como los 128 bits de otros protocolos...)

__________________
Manoloweb
  #10 (permalink)  
Antiguo 23/07/2003, 18:55
 
Fecha de Ingreso: julio-2003
Mensajes: 463
Antigüedad: 14 años, 5 meses
Puntos: 0
Es q no se que utilizar para encriptar la contraseña, pq para la versión 4.2.0 de PHP no he encontardo la librería de Mcrypt para windows que hace falta.


Un saludo.
  #11 (permalink)  
Antiguo 23/07/2003, 19:10
Avatar de Manoloweb  
Fecha de Ingreso: enero-2002
Ubicación: Monterrey
Mensajes: 2.454
Antigüedad: 15 años, 10 meses
Puntos: 5
Como dato cultural... la cantidad de combinaciones para md5 es 2^128, algo cercano a...

680,564,733,841,876,926,926,749,214,863,540,000,00 0

Has intentado con la opcion PASSWORD de MySQL?? es otra buena opción, aunque también irreversible...

Otra buena opción es que TU mismo hagas un mini algoritmo de encriptacion, del que solo tu tengas la formula, o bien, algo más básico, como una tabla de traducciones de caracteres, por ejemplo...

a=x
b=2
c=m
d=l
e=7
f=F
g=1
h=0
... etcetera...

tal vez te lleve un rato hacer la tabla para evitar duplicados, pero una vez que la tengas, puedes usarla para "encriptar" los datos...

luego solo aplicas la tabla en sentido contrario para recuperar el password.

Usando los caracteres de arriba... te pongo un ejemplo...

Password real: gebadea
Password traducido: 172xl7x

Y convertirlo de regreso solo requiere conocer la tabla de equivalencias...
__________________
Manoloweb
  #12 (permalink)  
Antiguo 23/07/2003, 19:14
 
Fecha de Ingreso: julio-2003
Mensajes: 463
Antigüedad: 14 años, 5 meses
Puntos: 0
Resulta interesante...Voy a pensar lo de hacer la tabla q dices...

Gracias por tus ideas, tu interés y tu tiempo.

Un saludo.
  #13 (permalink)  
Antiguo 23/07/2003, 22:35
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Y si necesitas "reversibilidad" de esos datos encriptados .. usa las extensiones (librerias) mcrypt ... En el manual oficial de PHP (www.php.net) tienes ejemplos de uso.

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #14 (permalink)  
Antiguo 24/07/2003, 04:02
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 15 años, 5 meses
Puntos: 16
Hola,

Es que MD5 es mas un algoritmo de hash que de encriptacion. Lo que pasa es que la gente le ha encontrado utilidad para "ocultar" la informacion.

Deberias considerar por que necesitarias desencriptar el password. La unica razon por la que se me ocurre es para el caso de "Recordar contraseña". Pero en este caso se puede generar una contraseña nueva aleatoria y mandarla. Luego el usuario cambiaria esa contraseña aleatoria por una que pueda recordar. Asi que tampoco necesitas desencriptar la contraseña.

Sobre que alguien por "casualidad" averigue un texto que coincida con el md5 de la verdadera contraseña, mas que por casualidad seria por fuerza bruta. Si empiezas a mandar cadenas, llegara un momento en que mande una con el mismo md5 (puede ser una hora, un dia, un milenio, ...). Pero los metodos de fuerza bruta funcionaran siempre, uses el metodo que uses.

Y sobre el metodo de "traslacion" de caracteres, si alguien ha sido capaz de "robarte" la lista de contraseñas, ¿por que no puede haberte "robado" el codigo (script) donde desencriptas? Esa es la ventaja de md5: aunque te roben las contraseñas, no hay algoritmo de desencriptacion que te puedan robar para desencriptar.

Bueno, es solo mi opinion. Como siempre, debes evaluar los pros y contras de ambos metodos.

Saludos.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #15 (permalink)  
Antiguo 24/07/2003, 09:47
 
Fecha de Ingreso: julio-2003
Mensajes: 1
Antigüedad: 14 años, 4 meses
Puntos: 0
Cómo encripto los datos antes de que salgan del formulario o que viaje encriptado, me refiero al codigo por que manoloweb dijo que con este codigo $pwd=md5($_POST["password"]);

1.-pero donde lo pongo?

<input type="password name="pwd" class="campo">

2.-es en un php o en un htm

3.-en mysql usando el phpMyadmin le tengo que poner en Function MD5 y para que se encripten los passwords ?


esta es una pregunta para manoloweb
  #16 (permalink)  
Antiguo 24/07/2003, 10:51
Avatar de DINASEN  
Fecha de Ingreso: marzo-2003
Mensajes: 997
Antigüedad: 14 años, 9 meses
Puntos: 1
no eso lo tienes que hacer antes de hacer el insert en tu base de datos pro eso se recoje con la vatiable global post y se mete en otra variable para depeus hacer el insert a ese campo con la variable $pwd
seria algo asi
Código PHP:
$pwd=md5($_POST["password"]);
mysql_query("INSERT INTO usuarios(pass) values ('$pwd')") or die(mysql_error());
mysql_close(); 
PD : perdona sapo pro contestar yo pero es que no vi el fianl te tu mensaje
Un Saludo

Última edición por DINASEN; 24/07/2003 a las 12:10
  #17 (permalink)  
Antiguo 24/07/2003, 12:07
 
Fecha de Ingreso: julio-2003
Mensajes: 463
Antigüedad: 14 años, 5 meses
Puntos: 0
Vale, pues la voy a utilizar...mejor será q no sea reversible.

Muchas gracias por orientarme.

Un saludo.
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.
Tema Cerrado




La zona horaria es GMT -6. Ahora son las 13:44.