.NET RSA.Create (String algName): что входит в algName? - PullRequest
4 голосов
/ 29 августа 2011

Согласно документации MSDN для класса RSA есть два RSA.Create () метода .Одна реализация по умолчанию и та, которая принимает строковый параметр "algName".Я не смог найти ни одного примера использования версии RSA.Create (String) в Интернете.

Итак, мои вопросы: что обычно содержит параметр «algName»?Какие алгоритмы можно использовать?Или где я могу найти информацию о правильных именах алгоритмов?

Ответы [ 3 ]

9 голосов
/ 29 августа 2011

Вы можете поместить все что угодно, но я думаю, вам нужно реализовать это самостоятельно.В платформе .NET имеется только одна реализация алгоритма RSA, а именно RSACryptoServiceProvider.http://msdn.microsoft.com/en-us/library/system.security.cryptography.rsacryptoserviceprovider.aspx

Метод Create(String) унаследован от AsymmetricAlgorithm, и вы можете передать в метод немало значений, полный список см. В http://msdn.microsoft.com/en-us/library/bf2t8ayw.aspx ...

5 голосов
/ 30 августа 2011

Различные методы Create криптографического API .NET предназначены для работы с machine.config файлом и типом System.Security.Cryptography.CryptoConfig.

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

RSA rsa = RSA.Create ();

создаст по умолчанию (ничего в файле machine.config) RSACryptoServiceProvider.Теперь, если вы измените machine.config, ваше приложение может вернуть вам экземпляр RSAManaged (например, сконфигурировав его для использования Mono.Security.dll).Это очень полезно для того, чтобы приложения могли выбирать конкретные реализации (например, сертифицированные FIPS-140) или HSM (аппаратные модули безопасности) - т.е. не нужно перекомпилировать приложение для их поддержки!

Вернуться к исходному Create (string) , этот метод позволяет выбрать, какую реализацию использовать.Он просто вызывает CryptoConfig.CreateFromName (string) и возвращает результат, в данном случае, к RSA экземпляру.

Это полезно, если вы хотите быть уверен использовать конкретную реализацию, например RSAManaged - даже без привязки вашего приложения к определенной сборке (например, Mono.Security.dll).

2 голосов
/ 14 августа 2015

Эрик А. Брандштадмоен до сих пор был правильным, но в .NET 4.6 теперь есть второй класс RSA:

RSACng

https://msdn.microsoft.com/en-us/library/system.security.cryptography.rsacng(v=vs.110).aspx

RSA.Create () по-прежнему возвращает RSACryptoServiceProvider по умолчанию, но, как упоминалось выше, вы можете изменить это поведение в machine.config.

Если вас интересует более подробное сравнение и примеры того, как переопределить его в machine.config, вы можете проверить это сообщение в блоге:

http://dusted.codes/how-to-use-rsa-in-dotnet-rsacryptoserviceprovider-vs-rsacng-and-good-practise-patterns

...