Foros del Web » Programando para Internet » PHP »

Detectar cadena encriptada con MD5()

Estas en el tema de Detectar cadena encriptada con MD5() en el foro de PHP en Foros del Web. Que tal gentes!! ¿Existe alguna manera de comprobar si un STRING es una cadena de texto normal o si es una cadena que ha sido ...
  #1 (permalink)  
Antiguo 02/05/2006, 13:28
 
Fecha de Ingreso: diciembre-2003
Mensajes: 1.583
Antigüedad: 14 años
Puntos: 13
Detectar cadena encriptada con MD5()

Que tal gentes!!

¿Existe alguna manera de comprobar si un STRING es una cadena de texto normal o si es una cadena que ha sido transformada a su hash MD5?
__________________
El conocimiento es libre: Movimiento por la Devolución
  #2 (permalink)  
Antiguo 02/05/2006, 13:46
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
No sé si te servirá:

Cita:
mina86 at tlen dot pl
26-Feb-2004 09:14
In respons to Emin Sadykhov at 14-Oct-2003 12:47:
The function presented by Emin isn't IMO simple, simpler is:
Código PHP:
<?php
if (!function_exists('is_md5')) {
  function 
is_md5($var) {
   return 
preg_match('/^[A-Fa-f0-9]{32}$/',$var);
  }
}
?>
Morover (as I proved somewhere else) it's faster 'cuz preg_match() is faster then ereg()
fuente:
www.php.net/md5 (Comentarios de los usuarios)

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #3 (permalink)  
Antiguo 02/05/2006, 13:49
AlvaroG
Invitado
 
Mensajes: n/a
Puntos:
Hay que partir de la base de que es virtualmente imposible 'descifrar' el md5.
Así que lo que podés hacer es verificar si tiene el largo adecuado (no recuerdo ahora, pero creo que son 32 caracteres), si tiene solamente letras y números (además el md5() de php devuelve las letras en minúsculas), que todas las letras estén con la misma capitalización (todas minúsculas o todas mayúsculas) y no mucho más....

Tampoco estoy seguro de lo que voy a escribir ahora, pero creo que por las propias características del md5, cualquier cadena que tenga el largo adecuado, y cumpla con tener solamente letras y números podría ser una suma md5 de algo....

edito después de ver la respuesta de Cluster:
justamente a eso me refería, lo único que se puede hacer es comprobar si tiene la forma correcta

Saludos.
  #4 (permalink)  
Antiguo 02/05/2006, 14:06
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Si, .. sólo se trata de ver si se cumple un "patrón" .. ya que el algoritmo del hash MD5() es conocido (32 caracteres de largo .. en cierto rango de caracteres) .. eso es lo más que se puede ver. Ahora .. que te "coincida" una cadena legítima (no "codificada") con ese patrón .. es "probable" que pudiera suceder (no a lo mejor en un contexto de datos que son "legibles" por humanos o "pronunciables" pero si en otro tipo de contexto: n° de série de productos .. etc).

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #5 (permalink)  
Antiguo 02/05/2006, 15:26
 
Fecha de Ingreso: diciembre-2003
Mensajes: 1.583
Antigüedad: 14 años
Puntos: 13
Encontré por ahí una librería Javascript que devuelve el hash md5 de una cadena. Obviamente la mayor utilidad que prestaría es encriptar un password antes de que sea enviado al servidor, y así entregaría más seguridad dentro del trayecto entre el cliente (navegador) y el servidor. Y como el PHP recibe la cadena ya encriptada, sólo restaría insertarla en la base de datos (en caso que sea un formulario de registro) o comporarla con los password que se almacenan encriptados en la base de datos (en caso que sea un formulario de login).

El inconveniente que veo es que si por X motivos el navegador no contara con Javascript, el PHP recibiría la cadena sin encriptar. Entonces el PHP necesitaría saber de alguna manera si la cadena que recibe viene encriptada o no para poder hacer el registro o la búsqueda en la base de datos.

Lo único que se me ha ocurrido para poder hacer esa detección, sería que mediante Javascript insertar un campo oculto en el formulario. Y luego en el PHP que reciba los datos detectar si existe ese campo oculto ha sido enviado. Si no se detecta significa que el browser no pudo generarlo por no contar con Javascript, y por lo tanto tampo se pudo encriptar la cadena.

Y por lo que veo es la solución que me entregaría un menor margen de error. ¿Estoy en lo correcto?
__________________
El conocimiento es libre: Movimiento por la Devolución
  #6 (permalink)  
Antiguo 02/05/2006, 15:31
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Y por qué no usas los standares: SSL (Secure Socket Layer) .. eso es realmente seguro .. Todo lo demas puede plantear algún tipo de problema como los que mencionas y sólo asegurarían una "captura" de datos por el camino en el momento de ese "registro" de esa contraseña .. pero no el resto de datos (que viajan igualmente NO encriptados) no "certifica" que estás en una zona "segura" como lo hace el certificado SSL que acompaña a un dominio registrado en regla.

Cita:
Lo único que se me ha ocurrido para poder hacer esa detección, sería que mediante Javascript insertar un campo oculto en el formulario. Y luego en el PHP que reciba los datos detectar si existe ese campo oculto ha sido enviado. Si no se detecta significa que el browser no pudo generarlo por no contar con Javascript, y por lo tanto tampo se pudo encriptar la cadena.

Y por lo que veo es la solución que me entregaría un menor margen de error. ¿Estoy en lo correcto?
Detectar si un navegador tiene javascript no es taréa de PHP. Intenta tratar el tema en el foro de Javascript.

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
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

SíEste tema le ha gustado a 1 personas (incluyéndote)




La zona horaria es GMT -6. Ahora son las 19:51.