Функции необратимого шифрования в MySQL (MD5,PASSWORD,SHA1)

В данной публикации будут рассмотрены некоторые функции необратимого шифрования применяемые в СУБД MySQL.

Функция MD5() — производит необратимое шифрование входящих данных по алгоритму MD5 (Message-Digest Algoritm).

Функция принимает на вход строку и возвращает 128-битную контрольную сумму, вычисляемую по алгоритму MD5. Возвращаемое значение — это 32-разрядное шестнадцатиричное число, уникальное для каждой строки. Если строки отличаются хотя бы одним символом, то результат выполнения функции MD5() для этих строк будет разный, для двух одинаковых строк — результат будет всегда одинаков.

Примеры:
mysql> select md5('Roman'), md5('Roman');
+----------------------------------+----------------------------------+
| md5('Roman')                     | md5('Roman')                     |
+----------------------------------+----------------------------------+
| b5df36ac79aa6391ffb432b9e5ad7880 | b5df36ac79aa6391ffb432b9e5ad7880 |
+----------------------------------+----------------------------------+
1 row in set (0.00 sec)

mysql> select md5('Roman V'), md5('Roman');
+----------------------------------+----------------------------------+
| md5('Roman V')                   | md5('Roman')                     |
+----------------------------------+----------------------------------+
| c8337353085605e2945ad8f94b787dfb | b5df36ac79aa6391ffb432b9e5ad7880 |
+----------------------------------+----------------------------------+
1 row in set (0.00 sec)


Функция PASSWORD() — также производит необратимое шифрование данных, эта функция шифрует пароли пользователей в MySQL в столбце password таблицы привилегий user системной базы данных mysql.

Пример:
mysql> select password('Roman'), password('Roman');
+-------------------------------------------+-------------------------------------------+
| password('Roman')                         | password('Roman')                         |
+-------------------------------------------+-------------------------------------------+
| *13F80D80FAC1C0A0FB300C8FCE4E39B232433608 | *13F80D80FAC1C0A0FB300C8FCE4E39B232433608 |
+-------------------------------------------+-------------------------------------------+
1 row in set (0.00 sec)

mysql> select password('Roman V'), password('Roman');
+-------------------------------------------+-------------------------------------------+
| password('Roman V')                       | password('Roman')                         |
+-------------------------------------------+-------------------------------------------+
| *6F3290D96EA0CF5D14C521DC4706DA9C37AD67A5 | *13F80D80FAC1C0A0FB300C8FCE4E39B232433608 |
+-------------------------------------------+-------------------------------------------+
1 row in set (0.00 sec)


В старых версиях MySQL использовался менее защищённый алгоритм шифрования, для совместимости в новых версиях есть функция OLD_PASSWORD() — реализующая старый алгоритм шифрования.

Пример:
mysql> select password('Roman'), old_password('Roman');
+-------------------------------------------+-----------------------+
| password('Roman')                         | old_password('Roman') |
+-------------------------------------------+-----------------------+
| *13F80D80FAC1C0A0FB300C8FCE4E39B232433608 | 797b74f76f364a6d      |
+-------------------------------------------+-----------------------+
1 row in set, 1 warning (0.00 sec)


Поскольку функция PASSWORD() используется в системе идентификации MySQL её лучше не использовать для собственных нужд и обойтись функциями SH1() и MD5().

Функция SHA1 — вычисляет 160-битную контрольную сумму с использованием алгоритма SHA1 (Secure Hash Algoritm).

Возвращаемое значение представляет собой 40-разрядное шестнадцатиричное число, либо NULL (в случае когда входной параметр равен NULL).

Пример:
mysql> select sha1('Roman'), sha1('Roman');
+------------------------------------------+------------------------------------------+
| sha1('Roman')                            | sha1('Roman')                            |
+------------------------------------------+------------------------------------------+
| 396bd07890bc77d98cce08898143095a50e943a4 | 396bd07890bc77d98cce08898143095a50e943a4 |
+------------------------------------------+------------------------------------------+
1 row in set (0.00 sec)

mysql> select sha1('Roman V'), sha1('Roman');
+------------------------------------------+------------------------------------------+
| sha1('Roman V')                          | sha1('Roman')                            |
+------------------------------------------+------------------------------------------+
| 7430a7e8676e3f1a39802dcbbca0e5a8c61ee179 | 396bd07890bc77d98cce08898143095a50e943a4 |
+------------------------------------------+------------------------------------------+
1 row in set (0.00 sec)


Вот и всё.

0 комментариев

Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.