Рядки

MD5

Рахує MD5-хеш рядка — 32 шістнадцяткові символи.

Синтаксис

MD5(<текст>)

Для того самого тексту хеш завжди однаковий, а для різного — майже напевно різний. Зручно, щоб швидко порівняти великі тексти, помітити, чи змінився рядок, або зробити короткий стабільний ключ із кількох полів.

Дані для прикладів

employees

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

Ці таблиці вже створено в пісочниці — приклади нижче працюють із ними. Хочеш повторити у своїй базі — скопіюй SQL.

Хеш рядка
SELECT MD5('hello') AS hash;
hash
5d41402abc4b2a76b9719d911017c592
Однаковий текст — однаковий хеш
SELECT MD5('Emma') = MD5('Emma') AS same,
MD5('Emma') = MD5('emma') AS different_case;
samedifferent_case
truefalse
Відбиток кожного рядка таблиці
SELECT name,
MD5(CONCAT_WS('|', name, department, salary)) AS fingerprint
FROM employees;
namefingerprint
Emma955dde73b3e3b6e4dec390ce6f57e831
Liam8be374388162c439affdcc7e7f3747b6
Olivia2c2d88d9b7eb90779e7219d9f95ea608
Noah5ddac0a080c459d3a34eff666ef5f2b1
Sophia10955739914543cdf5560890576e4205

Зміниться будь-який із цих стовпців — зміниться й відбиток.

Зверни увагу

Для паролів MD5 не годиться: його давно вміють підбирати. Паролі хешують спеціальними алгоритмами, як-от crypt() із розширення pgcrypto.

Склеюючи поля для відбитка, став роздільник: CONCAT('ab', 'c') і CONCAT('a', 'bc') дають однаковий текст, а отже й однаковий хеш. Тому в прикладі CONCAT_WS('|', …).

NULL на вході дає NULL, а не хеш порожнього рядка.

Схожі функції