Cadenas

MD5

Calcula el hash MD5 de una cadena: 32 caracteres hexadecimales.

Sintaxis

MD5(<texto>)

El mismo texto siempre da el mismo hash, y un texto distinto casi seguro da uno distinto. Útil para comparar rápido textos grandes, detectar si una fila ha cambiado o crear una clave corta y estable a partir de varios campos.

Datos para los ejemplos

employees

namedepartmentsalarybonusphone
Emmabackend1200300+44 7700 900123
Liambackend1000NULLNULL
Oliviafrontend1350150+44 7700 900456
Noahfrontend950NULL+44 7700 900789
Sophiadesign1200200NULL

Estas tablas ya están creadas en el entorno de pruebas y los ejemplos de abajo las usan. ¿Quieres repetirlo en tu propia base de datos? Copia el SQL.

El hash de una cadena
SELECT MD5('hello') AS hash;
hash
5d41402abc4b2a76b9719d911017c592
Mismo texto, mismo hash
SELECT MD5('Emma') = MD5('Emma') AS same,
MD5('Emma') = MD5('emma') AS different_case;
samedifferent_case
truefalse
Una huella de cada fila de la tabla
SELECT name,
MD5(CONCAT_WS('|', name, department, salary)) AS fingerprint
FROM employees;
namefingerprint
Emma955dde73b3e3b6e4dec390ce6f57e831
Liam8be374388162c439affdcc7e7f3747b6
Olivia2c2d88d9b7eb90779e7219d9f95ea608
Noah5ddac0a080c459d3a34eff666ef5f2b1
Sophia10955739914543cdf5560890576e4205

Si cambia cualquiera de estas columnas, cambia también la huella.

Ten en cuenta

MD5 no sirve para contraseñas: hace tiempo que se sabe descifrar. Las contraseñas se protegen con algoritmos especiales, como crypt() de la extensión pgcrypto.

Al unir campos para una huella, pon un separador: CONCAT('ab', 'c') y CONCAT('a', 'bc') dan el mismo texto y, por tanto, el mismo hash. Por eso el ejemplo usa CONCAT_WS('|', …).

NULL como entrada da NULL, no el hash de una cadena vacía.

Funciones relacionadas