Я работаю с Subversion на базе Windows и хотел бы написать простую утилиту на .NET для работы с файлом паролей Apache. Я понимаю, что он использует функцию, называемую MD5Crypt, но я не могу найти описание алгоритма, кроме этого, в какой-то момент он использует MD5 для создания хэша.
Может кто-нибудь описать алгоритм MD5Crypt и формат строки пароля?





Вы можете найти реализацию md5crypt в tcllib пакет.. Загрузка доступна с Sourceforge.
Вы также можете найти пример apache-совместимого md5crypt в исходный код для CAS Generic Handler
MD5Crypt - это в основном замена устаревшей функции unix crypt. Он был представлен во freebsd, а также был принят другими группами.
Основная идея такова:
Но есть проблема:
Итак, мы можем добавить к паролю строку с «солью».
Вы упоминаете .net, на другом форуме есть указатель на это:
System.Security.Cryptography.MD5CryptoServiceProvider md5 = new
System.Security.Cryptography.MD5CryptoServiceProvider();
string hash =BitConverter.ToString((md5.ComputeHash(
System.Text.ASCIIEncoding.Default.GetBytes(stringtohash) ) ));
HTH!
Процесс довольно сложный ... соль и пароль хешируются не один раз, а 1000 раз. Кроме того, в кодировке base64 используется другой алфавит, а отступы удалены с конца.
Лучше всего, вероятно, найти библиотеку для использования, например, glibc под cygwin.
Поскольку вы в любом случае кодируете Apache, взгляните на Реализация Apache файла crypt-md5.
Исходный алгоритм (я думаю) на C можно найти здесь. Он отличается от приведенной выше реализации только другим магическим числом.
Точное текстовое описание алгоритма криптографии, обновленное для использования с sha256 и sha512, находится по адресу http://www.akkadia.org/drepper/SHA-crypt.txt.
Он включает в себя контрасты с алгоритмом MD5, поэтому он должен дать вам то, что вы ищете.
Спасибо! Это именно то, что я так давно искал. Я искренне хочу, чтобы на Stack Overflow было больше подобной информации. Описания и обсуждения алгоритмов без привязки к отдельным языкам программирования. Мне жаль, что у меня не было больше, чем просто одобрение и согласие.