Discussion:
MD5 y cifrado de datos
Julio Ríos
2005-06-30 13:11:39 UTC
Permalink
Buenos días, quiero hacer una tabla para guardar la contraseñas de la
gente de una aplicación (existirá una tabla de usuario y no creo que
cree usuario en postgress), y me gustaría que estas contraseñas se
almacenaran cifradas en la base de datos. He visto que existe una
función md5, que puede valer en un principio.

Mi pregunta es ¿existe la función inversa a md5?
Quiero decir yo ejecuto la siguiente instrucción sql select
md5('julio'), y su resultado es c027.......35ff. ¿Es posible rescatar la
palabra que genera c027.......35ff? ¿Es decir es posible saber que julio
ha generado c027.......35ff?

Lo digo porque si creo un formulario de gestión de claves y cada usuario
se gestiona su propia clave, que pasaría si este usuario se olvida de la
clave, como puedo decirle al usuario que su clave es julio, por ejemplo.
Si no es con md5, existe alguna función que cifre y descifre?

Gracias de antemano a todos, Julio Ríos.
Pascual De Ruvo
2005-06-30 13:42:45 UTC
Permalink
Post by Julio Ríos
Mi pregunta es ¿existe la función inversa a md5?
No existe una función inversa a md5, si alguien la hiciera, estaría
inventando el método de compresión más eficiente del universo, imagina sacar
un md5 de 100 TB y almacenarlo en 32 bytes :-D.

El md5 es utilizado para cifrado en un sólo sentido.

Si no es con md5, existe alguna función que cifre y descifre?
Tendrías que usar algoritmos de cifrado desde fuera de la base de datos. Lo
más recomendado en mi opinión es que en vez de mostrarle al usuario el
password que insertó originalmente, generes un nuevo password aleatorio.

Saludos,

Pascual De Ruvo
Ing. Jhon Carrillo - Caracas, Venezuela
2005-06-30 14:00:26 UTC
Permalink
Hola,

Si deseas utilizar un método más efectivo investiga el "3DES" (encriptas y desencriptas con una llave), sin embargo, todavía no he visto implementaciones de estas funciones dentro de postgresql.


Jhon Carrillo
Ingeniero en Computación
jdigital (a) cantv.net
+584145246033
Caracas - Venezuela






----- Original Message -----
From: Pascual De Ruvo
To: Julio Ríos
Cc: pgsql-es-ayuda-RDL/***@public.gmane.org
Sent: Thursday, June 30, 2005 9:42 AM
Subject: Re: [pgsql-es-ayuda] MD5 y cifrado de datos





On 6/30/05, Julio Ríos <julio.rios-***@public.gmane.org> wrote:


Mi pregunta es ¿existe la función inversa a md5?

No existe una función inversa a md5, si alguien la hiciera, estaría inventando el método de compresión más eficiente del universo, imagina sacar un md5 de 100 TB y almacenarlo en 32 bytes :-D.

El md5 es utilizado para cifrado en un sólo sentido.



Si no es con md5, existe alguna función que cifre y descifre?



Tendrías que usar algoritmos de cifrado desde fuera de la base de datos. Lo más recomendado en mi opinión es que en vez de mostrarle al usuario el password que insertó originalmente, generes un nuevo password aleatorio.

Saludos,

Pascual De Ruvo
Alvaro Herrera
2005-06-30 20:25:49 UTC
Permalink
Post by Ing. Jhon Carrillo - Caracas, Venezuela
Hola,
Si deseas utilizar un método más efectivo investiga el "3DES"
(encriptas y desencriptas con una llave), sin embargo, todavía no he
visto implementaciones de estas funciones dentro de postgresql.
Porque no has mirado. El modulo contrib/pgcrypto implementa 3des, entre
otras cosas.
--
Alvaro Herrera (<alvherre[a]surnet.cl>)
"God is real, unless declared as int"
Julio Ríos
2005-07-01 07:41:23 UTC
Permalink
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta content="text/html;charset=ISO-8859-1" http-equiv="Content-Type">
</head>
<body bgcolor="#ffffff" text="#000000">
Perdonad mi ignorancia, estoy buscando documentaci&oacute;n de como utilizar
el m&oacute;dulo contrib/pgcrypto, pero no encuentro lo que busco.<br>
<br>
Yo uso Postgres 8.0.3 en un Windows XP. Mis preguntas son:<br>
<br>
&iquest;El m&oacute;dulo est&aacute; cargado en la versi&oacute;n o hay que a&ntilde;adirlo de alguna
manera.?<br>
<br>
&iquest;D&oacute;nde me lo puedo descargar, he estado buscando y no lo encuentro?<br>
<br>
Imaginemos que hay una funci&oacute;n 3des en el m&oacute;dulo, con los siguientes
par&aacute;metros: Cifrar o Descifrar, Clave de Cifrado, cadena a cifrar &iquest;
valdr&iacute;a con el siguiente SQL para usarlo,&nbsp; select 3DES('Cifrar',
'Clave', 'cadenadetexto') o por ejemmplo la siguiente sentencia select
3DES('Descifrar', 'Clave', C_Password), CodUsuario from tablausuarios,
suponiendo que existe una tabla con los campos CodUsuario y C_Password?<br>
<br>
P.D. De todas las maneras creo que es m&aacute;s r&aacute;pido y efectivo generar
nuevas claves en caso de olvido de contrase&ntilde;a por parte de un usuario y
utilizar la funci&oacute;n md5.<br>
<br>
Gracias de antemano, Julio R&iacute;os.<br>
<br>
<br>
Alvaro Herrera escribi&oacute;:
<blockquote cite="mid20050630202549.GA9363-WIm8KvQ1hlJmR6Xm/***@public.gmane.org" type="cite">
<pre wrap="">On Thu, Jun 30, 2005 at 10:00:26AM -0400, Ing. Jhon Carrillo - Caracas, Venezuela wrote:
</pre>
<blockquote type="cite">
<pre wrap="">Hola,

Si deseas utilizar un m&eacute;todo m&aacute;s efectivo investiga el "3DES"
(encriptas y desencriptas con una llave), sin embargo, todav&iacute;a no he
visto implementaciones de estas funciones dentro de postgresql.
</pre>
</blockquote>
<pre wrap=""><!---->
Porque no has mirado. El modulo contrib/pgcrypto implementa 3des, entre
otras cosas.

</pre>
</blockquote>
<br>
</body>
</html>
Leonel Nunez
2005-06-30 13:46:40 UTC
Permalink
Post by Julio Ríos
Buenos días, quiero hacer una tabla para guardar la contraseñas de la
gente de una aplicación (existirá una tabla de usuario y no creo que
cree usuario en postgress), y me gustaría que estas contraseñas se
almacenaran cifradas en la base de datos. He visto que existe una
función md5, que puede valer en un principio.
Mi pregunta es ¿existe la función inversa a md5?
Quiero decir yo ejecuto la siguiente instrucción sql select
md5('julio'), y su resultado es c027.......35ff. ¿Es posible rescatar
la palabra que genera c027.......35ff? ¿Es decir es posible saber que
julio ha generado c027.......35ff?
Lo digo porque si creo un formulario de gestión de claves y cada
usuario se gestiona su propia clave, que pasaría si este usuario se
olvida de la clave, como puedo decirle al usuario que su clave es
julio, por ejemplo. Si no es con md5, existe alguna función que cifre
y descifre?
Gracias de antemano a todos, Julio Ríos.
---------------------------(fin del mensaje)---------------------------
TIP 9: el optimizador ignorará el uso de recorridos de índice si los
tipos de datos de las columnas no coinciden
md5 solo digiere por lo tanto no puedes saber que puso el usuario a
partir del md5

cambiar el password no es opcion en caso que se olvide ?


Leonel
Luis Alfonso Cañas Triana
2005-06-30 15:07:44 UTC
Permalink
Muy buenos dias.

Tengo una pregunta referente al uso de left join.

El left join en postgres solo puede ser usado en el from?
o existe alguna forma de usarlo en el where

algo asi
select areas.nombre,personas.nombre from personas,areas where
personas.area=areas.codigo(+)

Desde ya muchas gracias.

Un saludo
Alvaro Herrera
2005-06-30 20:27:38 UTC
Permalink
Post by Luis Alfonso Cañas Triana
Tengo una pregunta referente al uso de left join.
El left join en postgres solo puede ser usado en el from?
Si
Post by Luis Alfonso Cañas Triana
o existe alguna forma de usarlo en el where
No
Post by Luis Alfonso Cañas Triana
select areas.nombre,personas.nombre from personas,areas where
personas.area=areas.codigo(+)
Cual es la ventaja de esto? Que puedes hacer que no se pueda hacer en
el FROM?
--
Alvaro Herrera (<alvherre[a]surnet.cl>)
"La fuerza no está en los medios físicos
sino que reside en una voluntad indomable" (Gandhi)
Jaime Casanova
2005-07-01 00:05:42 UTC
Permalink
Post by Alvaro Herrera
Post by Luis Alfonso Cañas Triana
Tengo una pregunta referente al uso de left join.
El left join en postgres solo puede ser usado en el from?
Si
Post by Luis Alfonso Cañas Triana
o existe alguna forma de usarlo en el where
No
Post by Luis Alfonso Cañas Triana
select areas.nombre,personas.nombre from personas,areas where
personas.area=areas.codigo(+)
Cual es la ventaja de esto? Que puedes hacer que no se pueda hacer en
el FROM?
Es menos confuso si tienes muchas tablas que se relacionan mediante left join...

ademas es mas comodo, al menos asi lo vi yo cuando me toco aprender la
sintaxis del JOIN... en informix, oracle y m$sql siempre pude hacerlo
sin esa sentencia directo en el where... es decir, es solo un poco de
maquillaje...
--
Atentamente,
Jaime Casanova
(DBA: DataBase Aniquilator ;)
Alvaro Herrera
2005-06-30 20:26:59 UTC
Permalink
Post by Julio Ríos
Mi pregunta es ¿existe la función inversa a md5?
Quiero decir yo ejecuto la siguiente instrucción sql select
md5('julio'), y su resultado es c027.......35ff. ¿Es posible rescatar la
palabra que genera c027.......35ff? ¿Es decir es posible saber que julio
ha generado c027.......35ff?
No.
Post by Julio Ríos
Lo digo porque si creo un formulario de gestión de claves y cada usuario
se gestiona su propia clave, que pasaría si este usuario se olvida de la
clave, como puedo decirle al usuario que su clave es julio, por ejemplo.
Si no es con md5, existe alguna función que cifre y descifre?
Otra opcion es tener un boton que "resetea" la password del usuario y
le manda una nueva password por correo electronico.
--
Alvaro Herrera (<alvherre[a]surnet.cl>)
"Ciencias políticas es la ciencia de entender por qué
los políticos actúan como lo hacen" (netfunny.com)
Luis Alfonso Cañas Triana
2005-07-01 00:07:41 UTC
Permalink
Bueno , lo necesitaba asi porque es la forma en que lo he venido manejando
en otras bases de datos.

Pero si no se puede sera seguir el consejo y hacerlo en el from.

Como siempre muchas gracias por sus respuestas

att
Luis Alfonso cañas
Post by Jaime Casanova
Post by Jaime Casanova
Post by Alvaro Herrera
Post by Luis Alfonso Cañas Triana
Tengo una pregunta referente al uso de left join.
El left join en postgres solo puede ser usado en el from?
Si
Post by Luis Alfonso Cañas Triana
o existe alguna forma de usarlo en el where
No
Post by Luis Alfonso Cañas Triana
select areas.nombre,personas.nombre from personas,areas where
personas.area=areas.codigo(+)
Cual es la ventaja de esto? Que puedes hacer que no se pueda hacer en
el FROM?
Es menos confuso si tienes muchas tablas que se relacionan mediante left
join...
Post by Jaime Casanova
ademas es mas comodo, al menos asi lo vi yo cuando me toco aprender la
sintaxis del JOIN... en informix, oracle y m$sql siempre pude hacerlo
sin esa sentencia directo en el where... es decir, es solo un poco de
maquillaje...
--
Atentamente,
Jaime Casanova
(DBA: DataBase Aniquilator ;)
Multicast
2005-07-01 17:00:52 UTC
Permalink
Bueno tambien es una gran ventaja para optimizar un query cuando el join es
en el where, imaginase que tienes tablas grandes, de la manera que hace el
join en FROM, hace el join primero de toda las 2 tablas completas para luego
sobre ello aplicar el filtro, osea que primero se come toda la chamba de
join de las tablas a unir para luego aplicar el filtro, lo q hace q la
consulta sea mas lenta, ejemplo:

select a.campo1,b.campo1 from tabla1 a, tabla2 b where a.campo2='XXX' and
b.campo3(+)=a.campo3;

De esta forma, primero se aplica el filtro, filtrando solanmente la data que
cumple la condicion (a.campo2='XXX'), y sobre ese filtro proyectado recien
se le aplica el join (b.campo3(+)=a.campo3) en este caso un left join, pero
ya no sobre toda la tabla, sino solamente sobre lo q realmente filtrado.
En el caso del join en el "from", hace un join de toda las 2 tablas, si
estas son grandes entonces se va a sentir el decaimiento en performance
considerable.

Saludos

Jose Alcantara



----- Original Message -----
From: "Luis Alfonso Cañas Triana" <luisalfonso-***@public.gmane.org>
To: <pgsql-es-ayuda-RDL/***@public.gmane.org>
Sent: Thursday, June 30, 2005 7:07 PM
Subject: [pgsql-es-ayuda] Fw: Uso de left join
Post by Luis Alfonso Cañas Triana
Bueno , lo necesitaba asi porque es la forma en que lo he venido manejando
en otras bases de datos.
Pero si no se puede sera seguir el consejo y hacerlo en el from.
Como siempre muchas gracias por sus respuestas
att
Luis Alfonso cañas
Post by Jaime Casanova
Post by Jaime Casanova
Post by Alvaro Herrera
Post by Luis Alfonso Cañas Triana
Tengo una pregunta referente al uso de left join.
El left join en postgres solo puede ser usado en el from?
Si
Post by Luis Alfonso Cañas Triana
o existe alguna forma de usarlo en el where
No
Post by Luis Alfonso Cañas Triana
select areas.nombre,personas.nombre from personas,areas where
personas.area=areas.codigo(+)
Cual es la ventaja de esto? Que puedes hacer que no se pueda hacer en
el FROM?
Es menos confuso si tienes muchas tablas que se relacionan mediante left
join...
Post by Jaime Casanova
ademas es mas comodo, al menos asi lo vi yo cuando me toco aprender la
sintaxis del JOIN... en informix, oracle y m$sql siempre pude hacerlo
sin esa sentencia directo en el where... es decir, es solo un poco de
maquillaje...
--
Atentamente,
Jaime Casanova
(DBA: DataBase Aniquilator ;)
---------------------------(fin del mensaje)---------------------------
TIP 6: ¿Has buscado en los archivos de nuestra lista de correo?
http://archives.postgresql.org/pgsql-es-ayuda
--
No virus found in this incoming message.
Checked by AVG Anti-Virus.
Version: 7.0.323 / Virus Database: 267.8.8/35 - Release Date: 30/06/2005
BeyondNet
2005-07-01 17:31:15 UTC
Permalink
Estimados Colegas, me es grato comunicarles por medio de la organización
FreedomDev que se ha publicado el artículo PATRÓN ESTRUCTURAL COMPUESTO
(COMPOSITE) USANDO C# 2.0. Donde veremos un ejemplo sencillo y práctico de
como utilizar el patrón compuesto para un diseño de objetos parte-todo,
proximamente se estará publicando PATRÓN ESTRATEGIA USANDO C# 2.0.

De la misma manera los invitamos a participar de nuestro proyecto open
source.

Proyecto OSTS (Open Source Terminal of Storage)

Cordialmente invitados

Día: Sábado 2 de Julio

Hora: 08:00 .p.m (GMT -0.5)

Lugar: Sala de Chat

El proyecto es totalmente abierto, los esperamos.


Plataforma Inicial Base : Microsoft Windows.

Máquina Virtual Base : Microsoft .NET Framework 2.0 Beta 2.

IDE's de Desarrollo Base : Microsoft Visual C# Express Edition Beta 2.

Base de Datos Inicial : PostgreSQL 8.0.

PROYECTO TOTALMENTE ABIERTO.


Contacto: aarroyor-UbvismivJyZYCkiuOJuI+***@public.gmane.org

Atentamente.

BeyondNet
Web Site: http://www.FreedomDev.org
WebLog: http://www.freedomdev.org/Freedomdev/weblog/
Open Your Mind, Open Your Code
----- Original Message -----
From: "Multicast" <jalcantara-***@public.gmane.org>
To: <pgsql-es-ayuda-RDL/***@public.gmane.org>
Sent: Friday, July 01, 2005 12:00 PM
Subject: Re: [pgsql-es-ayuda] Fw: Uso de left join
Post by Multicast
Bueno tambien es una gran ventaja para optimizar un query cuando el join es
en el where, imaginase que tienes tablas grandes, de la manera que hace el
join en FROM, hace el join primero de toda las 2 tablas completas para luego
sobre ello aplicar el filtro, osea que primero se come toda la chamba de
join de las tablas a unir para luego aplicar el filtro, lo q hace q la
select a.campo1,b.campo1 from tabla1 a, tabla2 b where a.campo2='XXX' and
b.campo3(+)=a.campo3;
De esta forma, primero se aplica el filtro, filtrando solanmente la data que
cumple la condicion (a.campo2='XXX'), y sobre ese filtro proyectado recien
se le aplica el join (b.campo3(+)=a.campo3) en este caso un left join, pero
ya no sobre toda la tabla, sino solamente sobre lo q realmente filtrado.
En el caso del join en el "from", hace un join de toda las 2 tablas, si
estas son grandes entonces se va a sentir el decaimiento en performance
considerable.
Saludos
Jose Alcantara
----- Original Message -----
Sent: Thursday, June 30, 2005 7:07 PM
Subject: [pgsql-es-ayuda] Fw: Uso de left join
Post by Luis Alfonso Cañas Triana
Bueno , lo necesitaba asi porque es la forma en que lo he venido manejando
en otras bases de datos.
Pero si no se puede sera seguir el consejo y hacerlo en el from.
Como siempre muchas gracias por sus respuestas
att
Luis Alfonso cañas
Post by Jaime Casanova
Post by Jaime Casanova
Post by Alvaro Herrera
Post by Luis Alfonso Cañas Triana
Tengo una pregunta referente al uso de left join.
El left join en postgres solo puede ser usado en el from?
Si
Post by Luis Alfonso Cañas Triana
o existe alguna forma de usarlo en el where
No
Post by Luis Alfonso Cañas Triana
select areas.nombre,personas.nombre from personas,areas where
personas.area=areas.codigo(+)
Cual es la ventaja de esto? Que puedes hacer que no se pueda hacer en
el FROM?
Es menos confuso si tienes muchas tablas que se relacionan mediante left
join...
Post by Jaime Casanova
ademas es mas comodo, al menos asi lo vi yo cuando me toco aprender la
sintaxis del JOIN... en informix, oracle y m$sql siempre pude hacerlo
sin esa sentencia directo en el where... es decir, es solo un poco de
maquillaje...
--
Atentamente,
Jaime Casanova
(DBA: DataBase Aniquilator ;)
---------------------------(fin del mensaje)---------------------------
TIP 6: ¿Has buscado en los archivos de nuestra lista de correo?
http://archives.postgresql.org/pgsql-es-ayuda
--
No virus found in this incoming message.
Checked by AVG Anti-Virus.
Version: 7.0.323 / Virus Database: 267.8.8/35 - Release Date: 30/06/2005
---------------------------(fin del mensaje)---------------------------
TIP 7: no olvides aumentar la configuración del "free space map"
Jaime Casanova
2005-07-02 19:20:45 UTC
Permalink
Post by BeyondNet
Estimados Colegas, me es grato comunicarles por medio de la organización
FreedomDev que se ha publicado el artículo PATRÓN ESTRUCTURAL COMPUESTO
(COMPOSITE) USANDO C# 2.0. Donde veremos un ejemplo sencillo y práctico de
como utilizar el patrón compuesto para un diseño de objetos parte-todo,
proximamente se estará publicando PATRÓN ESTRATEGIA USANDO C# 2.0.
De la misma manera los invitamos a participar de nuestro proyecto open
source.
Proyecto OSTS (Open Source Terminal of Storage)
Cordialmente invitados
Día: Sábado 2 de Julio
Hora: 08:00 .p.m (GMT -0.5)
Lugar: Sala de Chat
El proyecto es totalmente abierto, los esperamos.
Y que sala de chat habra sido?
--
Atentamente,
Jaime Casanova
(DBA: DataBase Aniquilator ;)
Alvaro Herrera
2005-07-01 20:27:14 UTC
Permalink
Post by Multicast
Bueno tambien es una gran ventaja para optimizar un query cuando el join es
en el where, imaginase que tienes tablas grandes, de la manera que hace el
join en FROM, hace el join primero de toda las 2 tablas completas para
luego sobre ello aplicar el filtro, osea que primero se come toda la chamba
de join de las tablas a unir para luego aplicar el filtro, lo q hace q la
select a.campo1,b.campo1 from tabla1 a, tabla2 b where a.campo2='XXX' and
b.campo3(+)=a.campo3;
De esta forma, primero se aplica el filtro, filtrando solanmente la data
que cumple la condicion (a.campo2='XXX'), y sobre ese filtro proyectado
recien se le aplica el join (b.campo3(+)=a.campo3) en este caso un left
join, pero ya no sobre toda la tabla, sino solamente sobre lo q realmente
filtrado.
En el caso del join en el "from", hace un join de toda las 2 tablas, si
estas son grandes entonces se va a sentir el decaimiento en performance
considerable.
No tengo tiempo de probarlo ahora (mucho menos mirar el codigo), pero me
parece que el optimizador no es tan estupido como tu crees. De hecho
estoy casi seguro que es capaz de "subir" una clausula hacia dentro de
la rama "no nulable" de un OUTER JOIN si cree que es conveniente.

Otra cosa que queria decir es que la sintaxis (+)= no sirve si tienes un
OUTER JOIN con mas de una condicion. Tampoco tengo tiempo ahora para
inventar un ejemplo, pero no deberia ser dificil.
--
Alvaro Herrera (<alvherre[a]surnet.cl>)
Criptografía: Poderosa técnica algorítmica de codificación que es
empleada en la creación de manuales de computadores.
Continúe leyendo en narkive:
Loading...