Это полностью спекуляция, основанная на прочтении многих постов от различных блоггеров Microsoft (хотя не от конкретного человека, который принял это решение). В .NET Framework нет управляемой реализации MD5, потому что:
1) Реализация уже была доступна из неуправляемого API-интерфейса Windows Crypto, и они не могли себе позволить или, скорее всего, чувствовали, что у них есть дела получше, чем выделять ресурсы для реализации чего-то, что уже можно было перенести из лежащего в основе неуправляемого реализация. Чтобы лучше понять, почему они могут принять это решение, прочитайте Сколько сотрудников Microsoft требуется, чтобы заменить лампочку? , Минус 100 баллов (относится к компилятору C #, но демонстрирует тот же способ тратить ресурсы там, где они приносят наибольшую пользу), Почему C # не реализует методы "верхнего уровня"? (еще один взгляд на ресурсы, необходимые для одной функции) и функции не существует по умолчанию (связано с здесь ). Ни один из этих ответов не отвечает на конкретный вопрос, но все они демонстрируют, что для написания нового кода требуется много ресурсов, ресурсов, которые лучше потратить в других местах. Вы можете утверждать, что для обертывания лежащего в основе неуправляемого кода по-прежнему требуются ресурсы, но я не думаю, что есть какие-либо сомнения в том, что будет чистая экономия, если не переписывать код, который уже доступен, протестирован и работает.
2) Позднее или, возможно, почти в то же время, исследования подтвердили возможность столкновений с MD5 . В этот момент и без того высокая планка переписывания MD5 в управляемом коде, вероятно, стала еще выше. После того, как жизненный цикл разработки безопасности продиктовал не использовать запрещенную криптографию , я могу представить, что управляемая версия MD5 станет последней вещью, которой они будут посвящать ресурсы.
Хотя мой ответ полностью спекулятивный, нетрудно понять, что даже у Microsoft ограниченные ресурсы и большой список функций, которые они хотели бы включить. Выбор должен быть сделан, и эти решения почти всегда влияют на определенный сегмент разработчиков.
В заключение вы сказали, что существуют сторонние MD5Managed классы, или вы всегда можете свернуть свои . Управляемая версия MD5 может быть « пятиминутная функция », но если это действительно так, то, как программисты, мы можем написать это сами.