Я рассматриваю реализацию аутентификации CRAM-MD5 для сервера IMAP и SMTP. Проблема в том, что CRAM, по-видимому, требует постоянного доступа к открытому текстовому паролю. Сервер отправляет клиенту уникальный вызов, и клиент возвращает:
MD5( MD5(password, challenge), MD5( password ) )
Я не вижу способа проверить это без открытого текстового пароля, в спецификации не сказано, что он должен быть доступным, но это только кажется логичным.
Единственное решение, которое я могу придумать, это зашифровать (правильно зашифровать, а не хешировать) пароль в базе данных (вероятно, используя AES на основе ключа RSA, поскольку у меня уже есть что с этим делать) и расшифровать его, когда мне нужно сравнить, кажется очень медленным, поскольку для каждого входа в систему по SMTP и IMAP потребуется расшифровка и хеширование.
Это лучшее решение/самое эффективное решение?
Или, лучше сказать, CRAM уже устарела, потому что теперь даже менее безопасная аутентификация по сети защищена с помощью SSL?