Re: ayuda decifrar password

From: Gunnar Wolf <gwolf(at)gwolf(dot)org>
To: Felipe Amezquita <felmarla(at)gmail(dot)com>
Cc: postgresayuda <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: Re: ayuda decifrar password
Date: 2007-05-08 18:08:15
Message-ID: 20070508180814.GE1202@gwolf.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

Felipe Amezquita dijo [Mon, May 07, 2007 at 05:16:29PM -0500]:
> Que tal lista..
> La cuestion es que creo los usuarios y sus pw con el pg_admin.
> Necesito crear una funcion que me valide el ingreso de los usuarios.
> Lo que tengo es lo siguiente
> Esta funcion es la que valida, usando unas otras funciones.
>
> create or replace function validar_ingreso(in_usuario IN varchar,in_login IN
> varchar)
> returns varchar
> as
> (...)
> language 'plpgsql'
>
> esta para el password y la del get_usario me trae el identificador de el
> usuario.
> El problema es que al usar el metodo md5 siempre me devuelve lo mismo quiero
> saber como hago para desepcriptar el pw Gracias

Es imposible recuperar la contraseña - La función MD5 no la cifra,
sino que hace un "digest" - No guarda la información completa, sino
que sólo una firma criptográficamente probada como fuerte (esto es,
que la probabilidad de que encuentres dos cadenas que por casualidad
coincidan es estúpidamente baja) de la misma. Tan sólo por ponerte un
ejemplo:

bd=# SELECT md5('mipass');
md5
----------------------------------
019c9fbe91025390efb1c65ce5eee5d6
(1 row)

Hasta acá todo bien - convierte a 'mipass' en una cadena de 32
caracteres. No es impensable que pueda recuperarla, ¿verdad? Bueno,
vamos pues a ver qué pasa cuando tu usuario tiene una contraseña un
poquito más larga de lo común:

bd=# SELECT md5('La bella y graciosa moza marchóse a lavar la ropa, la mojó en el arroyuelo y cantando la lavó. La frotó sobre una piedra y la colgó de un abedul.');
md5
----------------------------------
873a340a4ef8b69abc939e257ae74dcf
(1 row)

Haría falta una compresión bastante buena para que esos 150 caracteres
cupieran en los mismos 32, ¿verdad? Bueno, vamos pues a un ejemplito
más: Voy a usar como contraseña el correo completo hasta acá, tal como
lo tengo en pantalla. Por razones obvias de recursividad ad nauseam,
no lo reproduzco ;-) Pero el MD5 resultante (de 2414 bytes) es:

579d909daf79ba9ac86e5f679caef05a

Espero que con esto te quede un poquito más claro. Una propiedad de
MD5 es que te es imposible saber la longitud de la cadena
original. Seguramente, 873a340a4ef8b69abc939e257ae74dcf es el MD5 de
alguna otra cosa - por ejemplo, de una cadena aparentemente aleatoria
de 15031 bytes de largo (¿por qué no?). Pero es muy poco probable
(aunque ha habido avances que muestran algunas debilidades en MD5) dar
con ella sin tener un texto válido de origen.

Saludos,

--
Gunnar Wolf - gwolf(at)gwolf(dot)org - (+52-55)5623-0154 / 1451-2244
PGP key 1024D/8BB527AF 2001-10-23
Fingerprint: 0C79 D2D1 2C4E 9CE4 5973 F800 D80E F35A 8BB5 27AF

In response to

Responses

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Alvaro Herrera 2007-05-08 18:54:23 Re: ayuda decifrar password
Previous Message Esteban Osorio 2007-05-08 17:15:33 RE: Mejorar performance de un query.