СУБД MySQL оснащена несколькими специализированными функциями, разработанными для выполнения операций кодировки данных. Эти функции перечислены в табл. 7.6.
Функция PASSWORD() используется для кодирования строки пароля, удовлетворяющего системе безопасности MySQL. Это кодирование необратимо и выполняется оно с помощью алгоритмов, аналогичных тем, что применяются в UNIX. Оно необходимо для системы аутентификации MySQL, и руководство по использованию MySQL предлагает применять для кодирования функции ENCODE() /DECODE() или AES_ENCRYPT() / AES_DECRYPT() вместо создания специальных приложений.
При желании можно прибегнуть к системному вызову операционной системы UNIX crypt() с использованием функции ENCRYPT() , которая принимает для шифрования кодируемую строку и (дополнительно) строку salt (строка, уникальным образом идентифицирующая пароль, во многом подобная ключу).
Для кодирования и декодирования строк можно воспользоваться функциями ENCODE() и DECODE() . Функция ENCODE() принимает два аргумента кодируемой строки и ключ, который служит основой для кодирования.
Криптологические подсказки
Функция ENCRYPT() работает только в том случае, когда операционная система поддерживает системный вызов crypt(). Результатом работы функции ENCRYPT() в операционных системах семейства Windows, не поддерживающих этот системный вызов, будет NULL.
Результатом вызова функции ENCODE() является двоичная строка, которая должна храниться в переменной типа BLOB. Предыдущий пример будет иметь следующий вид.
Более безопасной альтернативой функциям ENCODE() и DECODE() (в них используется относительно слабый механизм защиты) являются функции AES_ENCRYPT() и AES_DECRYPT() , использующие алгоритм усовершенствованного стандарта кодирования (Advanced Encryption Standard, AES). Рассмотрим такой вариант предыдущего примера, который демонстрирует, каким образом могут быть использованы эти функции.
Как и в случае вызова функции ENCODE(), результатом вызова функции AES_ ENCRYPT() является двоичная строка, которая должна храниться в переменной типа BLOB. Это закодированное значение можно декодировать с помощью функции AES_ DECRYPT() и соответствующего ключа.
Самозащита
Если ваша версия СУБД MySQL поддерживает SSL-протокол (Secure Socket Layer), рекомендуем воспользоваться еще более надежным алгоритмом Triple-Data Encryption Standard (DES). Он реализован в функциях DES_ENCRYPT() и DES_ DECRYPT() .
Для того чтобы вычислить контрольную сумму MD5 (128 битов), можно прибегнуть к возможностям функции MD5() .
Для того чтобы вычислить контрольные суммы SHA (их длина составляет 160 битов), можно прибегнуть к возможностям функции SHA() .
Возвращаемые этими функциями контрольные суммы являются шестнадцатеричны-ми значениям, которые можно использовать в качестве паролей в различных системах аутентификации, что видно из следующего примера.
ТОП-10 популярных
Для работы с вещественными числами в MySQL предусмотрено три типа данных - это типы FLOAT, DOUBLE, DECIMAL. Числовой тип FLOAT...
БОЛЬШЕ БОЛЬШИХ LCD-мониторов
Процесс вытеснения с рынка мониторов с электронно-лучевой трубкой (CRT) продолжается. О смещении акцентов в пользу LCD-мониторов теперь заявляют даже те...
Процесс вытеснения с рынка мониторов с электронно-лучевой трубкой (CRT) продолжается. О смещении акцентов в пользу LCD-мониторов теперь заявляют даже те...
Больше больших LCD-мониторов
Процесс вытеснения с рынка мониторов с электронно-лучевой трубкой (CRT) продолжается. О смещении акцентов в пользу LCD-мониторов теперь заявляют даже те...
Процесс вытеснения с рынка мониторов с электронно-лучевой трубкой (CRT) продолжается. О смещении акцентов в пользу LCD-мониторов теперь заявляют даже те...
НОУТБУК с блестящим экраном
Eсли выпустившая ноутбук фирма предлагает его в качестве «замены настольному ПК», то это должно подразумевать под собой нечто большее, чем...
Eсли выпустившая ноутбук фирма предлагает его в качестве «замены настольному ПК», то это должно подразумевать под собой нечто большее, чем...
Иди и пиши. TravelMate C100
Планшетный компьютер платформы Tablet PC обязан в первую очередь быть легким, способным достаточно долго работать без подзарядки батарей. Эти требования...
Планшетный компьютер платформы Tablet PC обязан в первую очередь быть легким, способным достаточно долго работать без подзарядки батарей. Эти требования...
Магнито-оптический дисковод DynaMO
Cейчас, когда традиционные флоппи-дисководы на долгие годы замерли в своем развитии, поиск альтернативных носителей продолжается, и ситуация, казалось бы, разрешилась...
Cейчас, когда традиционные флоппи-дисководы на долгие годы замерли в своем развитии, поиск альтернативных носителей продолжается, и ситуация, казалось бы, разрешилась...
Компьютер для гурманов.«Эксимер ДМ»
Российская компания «Эксимер ДМ», известная как производитель настольных компьютеров, рабочих станций, серверов и ноутбуков, выступила техническим спонсором проведения торжеств, посвященных...
Российская компания «Эксимер ДМ», известная как производитель настольных компьютеров, рабочих станций, серверов и ноутбуков, выступила техническим спонсором проведения торжеств, посвященных...
Для длинных строк, т.е. строк длиннее 255 символов, в MySQL предусмотрены типы BLOB (Binary Large Object, большой двоичный объект) и...
В дополнение к календарным типам, предназначенным для хранения даты и времени отдельно, MySQL также поддерживает гибридные типы данных DATETIME и...
Вообще, к изменению настроек сервера прибегают очень редко. В MySQL программа заранее настроена так, чтобы соответствовать самым распространенным и основным...
Все о MySQL. Функции кодировки
28-12-2009
<< Предыдущая статья | Следующая статья >> |
Все о MySQL. Функции даты и времени | Все о MySQL. Функции управления |