Реклама

Обратимое шифрование в PHP Обновлено 19.03.2016

Стандартных средств не нашлось, возможно как то корректно и можно шифровать средствами MySQL, но тут нужно помудрить с кодировками... Возможно у меня не выходило это именно из за того, что все данные в UTF-8...

Пробовал подключать библиотеку для шифрования - mcrypt, вещь конечно шикарная... но на практике - не рентабельная.... Англоязычную строку шифрует англоязычным (ну или цифровым) паролем не долго, но вот чтобы зашифровать текстовую строку в UTF-8 на русском языке - требуется время.... Много времени... Очень много времени... строку из 20-символов и 5-значным паролем - шифровало минут 10.... Не есть гуд...

Нашел в сети само-писную функцию обратимого шифрования пароля:

Очень не плохая функция, сперта здесь....

Но опять же с ней есть один косяк - не работает с UTF-8... Хотя, возможно, не так выразился, возможно MySQL не в силах записать в поле с UTF-8 результат выполнения функции....

Пришлось добавлять костыли...

В общем, так:

В БД изменяем таблицу так, чтобы была кодировка cp1251_general_ci

Выполняем запрос типа SET NAMES CP1251

строку перед шифрованием кодируем в Windows-1251 функцией iconv

Затем шифруем.

И наконец-то кидаем в БД.

Вопрос, как расшифровать...

Порядок обратный:

Берем данные из БД,

вызываем опять фунцию шифрования, указав в первом параметре зашифрованную строку, во втором - пароль.

Получаем расшифрованную строку в cp1251 но если сайт в UTF-8, строка будет не читабельна...

Снова используем iconv и получаем читабельную строку.

Возможно, использовать вариант по проще - заранее файлы сайта отвечающие за шифрование, кодируем в 1251 и без вызова iconv получаем нормальные строки... Однако, здесь же опять нужно настраивать кодировку в .htaccess, чтобы конкретно этот файл воспринимался нормально браузером....

Если же данные не кидаются в БД, а просто выводятся на экран либо пишутся в файл, то можно вообще не заморачиваться с кодировками, все будет работать...

Для того чтобы не возникло вопроса скажу сразу - функция сама и шифрует и расшифровывает данные, в зависимости от того, что попадает в первый параметр...

 

Вложение:
Скачать файл zzg_crypt.php.zip
Размер 307 Bytes
Скачан 239 раз
RSS
RSS - Лента новостей
Закладки
Сообщества