Обычный формат закрытого ключа для RSA включает в себя открытый ключ («открытый показатель» полезен для реализации операций с закрытым ключом способом, который противостоит атакам синхронизации).Следовательно, можно извлечь открытый ключ из закрытого ключа.
(Теоретически возможно иметь «чистый закрытый ключ RSA», который НЕ включает в себя открытый показатель степени, но он имеет недостатки, такие какгораздо более сложная защита от атак по побочным каналам и сниженная производительность. Поэтому никто в здравом уме не делает этого. Вы можете предположить, что когда у вас есть закрытый ключ, у вас фактически есть полная пара ключей.)
В C #Стандартная библиотека / .NET, открытые и закрытые ключи RSA могут быть представлены в виде строк XML (ToXmlString()
и FromXmlString()
) или пользовательской структуры RSAParameters
(ExportParameters()
и ImportParameters()
).Если вы можете получить полный закрытый ключ, то вам просто нужно выбрать открытые поля (модуль и открытый показатель), которые вместе составляют открытый ключ.Обратите внимание, что RSACryptoServiceProvider
может быть интерфейсом к базовой реализации RSA, который может отказаться экспортировать закрытый ключ (но обычно принимает экспорт открытого ключа).