Я использую этот учебник, где я использую функцию mysql ENCRYPT.
http://www.pixelinx.com/2010/10/creating-a-mail-server-on-ubuntu-using-postfix-courier-ssltls-spamassassin-clamav-and-amavis/
но теперь у меня проблема с расшифровкой его в mysql или php. Я хочу сравнить, если введенный пароль совпадает с зашифрованным.
Как это можно сравнить? Mysql должен быть включен с помощью функции ENCRYPT!
Я ищу, но я не могу найти ничего, как расшифровать функцию ENCRYPT mysql …
ENCRYPT
использует односторонний алгоритм хеширования, не существует DECRYPT
. Это смысл шифрования паролей: у хакера не должно быть возможности видеть прозрачные текстовые пароли.
Когда вам нужно сравнить пароль в db с введенным пользователем, используйте такой запрос (используя подготовленные запросы)
SELECT * FROM `user` WHERE `name` = 'hek2mgl` AND `password` = ENCRYPT('user_input', `password`)
Функция ENCRYPT
выведет «соленую» строку с префиксом самой соли, поэтому при подаче обратно зашифрованный пароль будет повторно подаваться исходная соль.
Вы не можете расшифровать пароль – он зашифрован с односторонним шифрованием.
Вам нужно зашифровать введенный пароль и сравнить результат с сохраненным зашифрованным паролем.
вам не нужно DECRYPT пароль. Чтобы проверить, предоставил ли пользователь правильный пароль, просто введите RE-ENCRYPT пароль, указанный пользователем, и проверьте, совпадает ли он с тем, который хранится в вашей базе данных.
Более того, простая хэш-функция будет достаточной (избегайте MD5 и используйте соль, чтобы предотвратить атаки словаря или радуги)!