Эквивалент Java KeyFactory.generatePublic в C# для шифрования RSA

У меня есть этот код Java для создания открытого ключа на основе байтового массива base64 в Java:

return KeyFactory.getInstance("RSA").generatePublic(new X509EncodedKeySpec(base64PublicKeyBytes));

Эта строка впоследствии используется для шифрования некоторых данных.

Предположим, что у меня есть доступ к строке открытого ключа в кодировке base64. Будет ли эквивалентный код C# для генерации ключа таким же простым, как:

base64PublicKeyBytes =  Convert.FromBase64String(base64PublicKey);

и это затем можно использовать с RSACryptoServiceProvider следующим образом:

var rsa = new RSACryptoServiceProvider(2048);
                    var rsaKeyInfo = rsa.ExportParameters(false);
                    rsaKeyInfo.Modulus = base64PublicKeyBytes;

Нет, все будет не так просто. .NET не поддерживает этот формат открытого ключа, также известный как формат SubjectPublicKeyInfo. Есть несколько способов справиться с этим. Один из них - использовать библиотеку Bouncycastle C#, которая поддерживает этот формат. Другой - преобразовать его в формат, поддерживаемый .NET, например в формат XML RSA.ToXMLString().

President James K. Polk 10.10.2018 13:32

Спасибо за ответ. Я подумал, что это было не так просто. Вот что я пытаюсь: #if WINDOWS var existingPublicKeyData = rsa.ToXmlString (false); // извлекаем исходную экспоненту и повторно используем var exponent = ParseExponentFromPublicKeyInfo (existingPublicKeyData); var keyInfo = CreateRSARequiredKeyFormatCreateRSARequiredKeyFormat (exponen‌ t, orgEncryptionKey); Console.WriteLine («Повторно импортировать ключевую информацию.»); rsa.FromXmlString (keyInfo); #endif

Klaus Nji 10.10.2018 17:07
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
2
293
0

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