MD5
Es un algoritmo de reducción criptográfico de 128 bits ampliamente usado. Uno de sus usos es el de comprobar que algún archivo no haya sido modificado.
La función PostgreSQL MD5()
calcula el hash MD5 de una cadena y devuelve el resultado en hexadecimal. Utilizar el hash MD5 para almacenar contraseñas no es lo más seguro, pero es importante conocerlo pues es el se ha utilizado en forma tradicional por un par de décadas o más.
A continuación veamos la sintaxis de la MD5()
función:
MD5(string)

Para crear una tabla en PostgreSQL que almacene información de usuario con el password codificado con MD5, puedes seguir los siguientes pasos:
- Abre una conexión con tu base de datos PostgreSQL utilizando una herramienta como pgAdmin o la línea de comandos de PostgreSQL.
- Crea una nueva tabla utilizando el comando CREATE TABLE, especificando los nombres de las columnas y sus tipos de datos.
Por ejemplo:
CREATE TABLE usuarios (
id SERIAL PRIMARY KEY,
nombre VARCHAR(50),
email VARCHAR(50),
password VARCHAR(32)
);
En este ejemplo, estamos creando una tabla llamada «usuarios» con cuatro columnas: id (un número de serie generado automáticamente), nombre, email y password.
- Para almacenar el password codificado con MD5, debes utilizar una función de PostgreSQL llamada «md5». Esta función toma una cadena de texto como argumento y devuelve su hash MD5 en formato de texto. Puedes utilizar esta función en una instrucción INSERT para almacenar el password codificado en la tabla.
El ejemplo para esto:
INSERT INTO usuarios (nombre, email, password) VALUES ('Juan', 'juan@example.com', md5('contraseña123'));
En este ejemplo, estamos insertando un nuevo usuario en la tabla «usuarios» con el nombre «Juan», el email «juan@example.com» y el password «contraseña123» codificado con MD5.
Cuando quieras verificar si un usuario ha ingresado la contraseña correcta, debes comparar el hash MD5 del password ingresado con el hash almacenado en la base de datos. Puedes hacer esto utilizando la función md5 nuevamente en la consulta SELECT.
SELECT * FROM usuarios WHERE email='juan@example.com' AND password=md5('contraseña123');
En este ejemplo, estamos seleccionando todos los usuarios que tienen el email «juan@example.com» y el password «contraseña123» codificado con MD5.
Recuerda que utilizar el hash MD5 para almacenar contraseñas no es lo más seguro. Siempre es mejor utilizar algoritmos más seguros y modernos como bcrypt o scrypt.
Cómo hacer el mismo procedimiento con sha256?
Para almacenar contraseñas codificadas con SHA256 en una tabla de PostgreSQL, puedes seguir los mismos pasos para crear la tabla que contendrá la información:
- Abre una conexión con tu base de datos PostgreSQL utilizando una herramienta como pgAdmin o la línea de comandos de PostgreSQL.
- Crea una nueva tabla utilizando el comando CREATE TABLE, especificando los nombres de las columnas y sus tipos de datos.
CREATE TABLE usuarios (
id SERIAL PRIMARY KEY,
nombre VARCHAR(50),
email VARCHAR(50),
password VARCHAR(64)
);
Para almacenar el password codificado con SHA256, debes utilizar la función de PostgreSQL llamada «encode». Esta función toma dos argumentos: el primero es el resultado de la función hash, en este caso, la función «sha256», y el segundo es el formato de salida que queremos, en este caso, ‘hex’.
INSERT INTO usuarios (nombre, email, password) VALUES ('Juan', 'juan@example.com', encode(digest('contraseña123', 'sha256'), 'hex'));
En este ejemplo, estamos insertando un nuevo usuario en la tabla «usuarios» con el nombre «Juan», el email «juan@example.com» y el password «contraseña123» codificado con SHA256.
Cuando quieras verificar si un usuario ha ingresado la contraseña correcta, debes comparar el hash SHA256 del password ingresado con el hash almacenado en la base de datos. Puedes hacer esto utilizando la función digest y encode nuevamente en la consulta SELECT.
SELECT * FROM usuarios WHERE email='juan@example.com' AND password=encode(digest('contraseña123', 'sha256'), 'hex');
En este ejemplo, estamos seleccionando todos los usuarios que tienen el email «juan@example.com» y el password «contraseña123» codificado con SHA256.
Recuerda que SHA256 es un algoritmo de hash más seguro que MD5, pero todavía se recomienda utilizar técnicas adicionales como agregar una «sal» aleatoria a la contraseña y utilizar un algoritmo de hash más seguro y moderno como bcrypt o scrypt.
Es posible que PostgreSQL te devuelva un mensaje como el siguiente: «SQL Error [42883]: ERROR: function digest(unknown, unknown) does not exist». Esto no quiere decir que la consulta sea incorrecta, sino que debes habilitar el módulo «pgcrypto«.
Modulos adicionales: pgcrypto.
El módulo pgcrypto
proporciona funciones criptográficas para PostgreSQL .
Este módulo se considera » de confianza » , es decir, puede ser instalado por personas que no sean superusuarios y que tengan privilegios CREATE
sobre la base de datos actual.
Para instalar el módulo «pgcrypto», puedes utilizar el siguiente comando SQL en la línea de comandos de PostgreSQL:
CREATE EXTENSION pgcrypto;

Este comando creará el módulo «pgcrypto» en la base de datos actual.
Una vez instalado el módulo «pgcrypto», deberías ser capaz de utilizar la función «digest» sin errores.