Почему там не организованная реализация MD5 в платформе.NET?

В вашей текущей деятельности создайте новую Intent:

String value="Hello world";
Intent i = new Intent(CurrentActivity.this, NewActivity.class);    
i.putExtra("key",value);
startActivity(i);

Затем в новой активности получите эти значения:

Bundle extras = getIntent().getExtras();
if (extras != null) {
    String value = extras.getString("key");
    //The key argument here must match that used in the other activity
}

Используйте эту технику для передачи переменных из одно занятие другому.

11
задан CraigTP 30 July 2009 в 08:07
поделиться

7 ответов

Поскольку я не проектировал фреймворк, я не могу сказать наверняка, но я считаю, что они, вероятно, не беспокоились, чтобы препятствовать его использованию в целях безопасности

Первоначально я полагал, что неуправляемая реализация будет быстрее, но теперь мы знаем, что это не так, см .: https://stackoverflow.com/a/14850676/58391

Мой следующий Лучшее предположение совпадает с тем, что Павел говорит в комментариях выше. Как и в случае с большинством функций .NET и C #, вероятно, просто не было достаточной выгоды по сравнению с затратами для реализации, тестирования и доставки функции, когда базовая неуправляемая функция уже была достаточно хороша.

8
ответ дан 3 December 2019 в 03:04
поделиться

MD5CryptoServiceProvider был в .NET Framework со дня один, на самом деле:

byte[] hash = new MD5CryptoServiceProvider().
    ComputeHash(Encoding.ASCII.GetBytes("Hello World!"));

Обратите внимание, что все классы .NET BCL, которые инкапсулируют алгоритмы хеширования, наследуются от класса HashAlgorithm , поэтому их можно использовать полиморфно ...

public byte[] ComputeHash(byte[] buffer, HashAlgorithm hashAlgorithm)
{ ...

... и различные реализации могут быть зависимыми -Введено в ваш код:

public HashAlgorithm HashAlgorithm { get; set; }

РЕДАКТИРОВАТЬ

Ага, понятно. Дело в том, что MD5 (это чистое предположение) заключается в том, что это один из наиболее широко используемых алгоритмов хеширования, и поэтому его реализация должна соответствовать определенным стандартам, в частности, FIPS 140-1 . См. этот для получения дополнительной информации.

14
ответ дан 3 December 2019 в 03:04
поделиться

MD5 не подходит для каких-либо целей криптографии или проверки файлов, за исключением возможных ошибок при обнаружении ошибок передачи. Вероятно, это попытка заставить людей перейти на более качественные хеши, такие как SHA-1 или предпочтительный SHA-256.

http://www.mscs.dal.ca/~selinger/md5collision/

2
ответ дан 3 December 2019 в 03:04
поделиться
1
ответ дан 3 December 2019 в 03:04
поделиться

В .NET все, что заканчивается на CryptoServiceProvider, является оболочкой для неуправляемого Windows Crypto API. Все, что заканчивается на Managed, полностью пишется на управляемом языке. текст ссылки

Как утверждали другие люди, вам больше не следует использовать MD5. Вы должны использовать SHA-256, который в .NET имеет управляемую реализацию. Вам хорошо идти и торговать по лучшему алгоритму. (РЕДАКТИРОВАТЬ) Поскольку MD5 больше не является кошерным, мало шансов, что он будет обновлен в более поздней версии .NET, чтобы полностью управлять им, так как вы больше не должны его использовать.

1
ответ дан 3 December 2019 в 03:04
поделиться

Он существует с самого начала

// Create a new instance of the MD5CryptoServiceProvider object.
MD5 md5Hasher = MD5.Create();

// Convert the input string to a byte array and compute the hash.
byte[] data = md5Hasher.ComputeHash(Encoding.Default.GetBytes(input));

// Create a new Stringbuilder to collect the bytes
// and create a string.
StringBuilder sBuilder = new StringBuilder();

// Loop through each byte of the hashed data 
// and format each one as a hexadecimal string.
for (int i = 0; i < data.Length; i++)
{
    sBuilder.Append(data[i].ToString("x2"));
}

// Return the hexadecimal string.
string hexMD5hash = sBuilder.ToString();
-1
ответ дан 3 December 2019 в 03:04
поделиться

Это полностью предположение, основанное на чтении множества сообщений от различных блоггеров Microsoft (но не от конкретного человека, принявшего это решение). В платформе .NET нет управляемой реализации MD5, потому что:

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

2) Позже или, возможно, примерно в то же время, исследование доказало возможность коллизионных атак против MD5 . В этот момент и без того высокая планка переписывания MD5 в управляемый код, вероятно, стала еще выше. Как только жизненный цикл разработки безопасности предписывает не использовать запрещенное шифрование , я могу представить, что управляемая версия MD5 будет последним, на что они будут выделять ресурсы.

Хотя мой ответ является полностью предположением, это не так. трудно понять, что даже Microsoft имеет ограниченные ресурсы и большой список функций, которые они хотели бы включить. Выбор должен быть сделан, и эти решения почти всегда будут влиять на определенный сегмент разработчиков.

В заключение вы сами сказали, что существуют классы MD5Managed сторонних производителей, или вы всегда можете использовать свои собственные . Управляемая версия MD5 может быть « пятиминутной функцией », но если это действительно так, то как программисты мы можем написать ее сами.

t использовать запрещенную криптовалюту Я могу представить, что управляемая версия MD5 будет последним, на что они будут выделять ресурсы.

Хотя мой ответ является полностью предположением, нетрудно понять, что даже Microsoft имеет ограниченные ресурсы и большой список функций, которые они хотели бы включить. Выбор должен быть сделан, и эти решения почти всегда будут влиять на определенный сегмент разработчиков.

В заключение вы сами сказали, что существуют классы MD5Managed сторонних производителей, или вы всегда можете использовать свои собственные . Управляемая версия MD5 может быть « пятиминутной функцией », но если это действительно так, то как программисты мы можем написать ее сами.

t использовать запрещенную криптовалюту Я могу представить, что управляемая версия MD5 будет последним, на что они будут выделять ресурсы.

Хотя мой ответ является полностью предположением, нетрудно понять, что даже Microsoft имеет ограниченные ресурсы и большой список функций, которые они хотели бы включить. Выбор должен быть сделан, и эти решения почти всегда будут влиять на определенный сегмент разработчиков.

В заключение вы сами сказали, что существуют классы MD5Managed сторонних производителей, или вы всегда можете использовать свои собственные . Управляемая версия MD5 может быть « пятиминутной функцией », но если это действительно так, то как программисты мы можем написать ее сами.

Нетрудно понять, что даже Microsoft имеет ограниченные ресурсы и большой список функций, которые они хотели бы включить. Выбор должен быть сделан, и эти решения почти всегда будут влиять на определенный сегмент разработчиков.

В заключение вы сами сказали, что существуют классы MD5Managed сторонних производителей, или вы всегда можете использовать свои собственные . Управляемая версия MD5 может быть « пятиминутной функцией », но если это действительно так, то как программисты мы можем написать ее сами.

Нетрудно понять, что даже Microsoft имеет ограниченные ресурсы и большой список функций, которые они хотели бы включить. Выбор должен быть сделан, и эти решения почти всегда будут влиять на определенный сегмент разработчиков.

В заключение вы сами сказали, что существуют классы, управляемые MD5Managed сторонних производителей, или вы всегда можете использовать свои собственные . Управляемая версия MD5 может быть « пятиминутной функцией », но если это действительно так, то как программисты мы можем написать ее сами.

или вы всегда можете бросить свой собственный . Управляемая версия MD5 может быть « пятиминутной функцией », но если это действительно так, то как программисты мы можем написать ее сами.

или вы всегда можете бросить свой собственный . Управляемая версия MD5 может быть « пятиминутной функцией », но если это действительно так, то как программисты мы можем написать ее сами.

4
ответ дан 3 December 2019 в 03:04
поделиться
Другие вопросы по тегам:

Похожие вопросы: