PostFix + MySQL Encrypt (), как он проверяет пароль с рандовой солью?
-
30-09-2019 - |
Вопрос
Я реализовал мой почтовый сервер как продиктованный здесь.
Это отлично работает. Мой любопытность вращается вокруг ввода пользователей в базу данных и аутентификация их
Бег:
INSERT INTO users (email, password) VALUES ('sales@example.com', ENCRYPT('password'));
Несколько раз даст другое хеш для зашифрованного пароля, как его использование случайной соли. Т.е. если я введу продажи@example.com три раза с одним и тем же паролем, каждая хеш отличается ...
Мой вопрос к этому, как он, как это, чтобы сервер PostFix может фактически аутентифицировать пароль, когда пользователь входит в систему через почтовый клиент?
Не существует никаких проблем на скажем, как это работает нормально, больше просто для удовлетворения моего любопытства, чтобы я мог полностью понять, что происходит за кулисами, чтобы правильно подтвердить подлинность зашифрованного пароля.
Решение
Читайте человека Crypt: он возвращает соль в первых двух символах возвращаемого значения.
Таким образом, соль не потеряна, вы можете сравнить зашифрованную строку к результату Crypt («Pass», $ first_two_chars_of_encrypted_value).
Другие советы
PostFix сравнивает пароль из базы данных к новой шифровании, выполненной солью (пароль из БД).
шифровать:
update user set password = ENCRYPT('1234') where id = 1
Чтобы проверить пароль:
SELECT u.* FROM user u where u.email ='admin@dominio.com'
and ENCRYPT('1234', u.password) = u.password
Вы должны использовать шифрование («Pass», «соль»), чтобы заставить соль, в противном случае соль теряется навсегда, и у вас нет способа восстановления его. Довольно бессмысленная функция без нее. Это ужасная функция для использования, однако, потому что безопасность настолько минимальна; Вместо этого используйте пароль () или Old_Password ().
Encrypt () использует System Crypt (), которая может использовать все или только первые 8 символов, должна быть напечатана 7-битный ASCII, обычно использует 1 раунд хэш-хеха и полностью не подходит. Избегай это.