Алгоритм MD5Crypt

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

Может кто-нибудь описать алгоритм MD5Crypt и формат строки пароля?

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
3
0
3 404
4
Перейти к ответу Данный вопрос помечен как решенный

Ответы 4

Вы можете найти реализацию md5crypt в tcllib пакет.. Загрузка доступна с Sourceforge.

Вы также можете найти пример apache-совместимого md5crypt в исходный код для CAS Generic Handler

MD5Crypt - это в основном замена устаревшей функции unix crypt. Он был представлен во freebsd, а также был принят другими группами.

Основная идея такова:

  • хеш - хороший способ сохранить пароль
    • вы берете введенный пользователем пароль и хешируете его
    • сравните его с сохраненным хешем
    • если хеш совпадает, пароли совпадают

Но есть проблема:

  • Предположим, вы выбрали пароль «Джефф», а я также выбрал пароль «Джефф».
  • Теперь оба наших хэша паролей одинаковы.
  • Поэтому, если я увижу сохраненные хэш-коды, я буду знать, что ваш пароль такой же, как и мой, "jeff".

Итак, мы можем добавить к паролю строку с «солью».

  • Это может быть любая случайная вещь.
  • Предположим, для вашей учетной записи это «zuzu», а для моей - «rjrj».
  • Теперь мы хэшируем строку "jeffzuzu" для вашего пароля и "jeffrjrj" для моего пароля.
  • Теперь у нас есть разные значения хэша для нашего пароля.
  • Мы можем безопасно сохранить значение соли с хешированным паролем, поскольку даже знание значения соли не поможет декодировать хеш.

Вы упоминаете .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 было больше подобной информации. Описания и обсуждения алгоритмов без привязки к отдельным языкам программирования. Мне жаль, что у меня не было больше, чем просто одобрение и согласие.

Lee 16.02.2011 04:13

Другие вопросы по теме