Иногда может пригодится, если нужно сделать на сайте секретную переписку, то может пригодится встроенное в 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-файла |
Рейтинг: 55
Обновлено: 22.11.2024