Админские блоги Юрца

Обратимое шифрование данных в MySQL

Обратимое шифрование данных в MySQL

Иногда может пригодится, если нужно сделать на сайте секретную переписку, то может пригодится встроенное в MySQL шифрование. Можно, конечно, и средствами PHP, но это будет лишняя нагрузка на веб-сервер, который обрабатывает каждую команду.

По этому переложим все на MySQL!

В MySQL три способа зашифровать данные, ну и разумеется - расшифровать.

Для тех кто использует кирилицу или другие кодировки - все же лучше строку закодировать в Base64, а потом уже шифровать.

Шифрование Дешифрование

AES_ENCRYPT(str, key_str)

Принимает в качестве аргумента str строку, которую необходимо подвергнуть шифрованию, и секретный ключ key_str. Входные аргументы могут быть любой длины

AES_DECRYPT(crypt_str, key_str)

Принимает в качестве первого аргумента зашифрованную при помощи AES_ENCRYPT() строку. Ключ key_str при этом должен совпадать как в первой так и во второй строках. Если функция AES_DECRYPT() обнаруживает некорректные данные или некорректное заполнение строки, должно возвращаться значение NULL. Однако AES_DECRYPT() вполне может вернуть величину отличную от NULL, или просто "мусор"

ENCODE(str, pass_str)

Шифрует строку str, используя аргумент pass_str как секретный ключ

DECODE(crypt_str, pass_str)

Дешифрует строку crypt_str, зашифрованную функцией AES_DECRYPT(). Аргумент pass_str используется как секретный ключ

DES_ENCRYPT(str [, (key_number|key_string)])

Шифрует строку str, используя аргумент pass_str как секретный ключ. В качестве второго необязательного параметра может выступать строка key_string, задающая секретрый ключ. В случае использования секретного ключа необходимо приводить его в качестве второго параметра и в функции дешифровки DES_DECRYPT(). Вместо секретного ключа можно указать номер key_number, принимающий значение от 0 до 9. Номер указывает на запись в ключевом DES-файле сервера, местоположение которого можно задать при старте сервера MySQL в параметре --des-key-file

DES_DECRYPT(str [, key_string])

Дешифрует строку str, зашифрованную при помощи функции DES_ENCRYPT(). Если при шифровании в качестве второго параметра функции DES_ENCRYPT() было передано число или второй параметр был опущен, то параметр key_string функции DES_DECRYPT() указывать уже не требуется, так как он прописывается в зашифрованную строку. Такой подход, когда секретный ключ хранится на сервере и не передается через сетевое соединение, значительно безопаснее, поскольку значение ключа невозможно извлечь из сетевого трафика. Если второй параметр не указывается, то предполагается, что используется первая строка DES-файла


Похожие статьи:

Обратимое шифрование данных в MySQL

Обратимое шифрование данных в PHP

     

Понравилась статья? Поделитесь с друзьями: