2016-08-22 6 views
3

У меня есть приложение ASP.Net Core 1.0.0 с использованием криптографии. Мне нужно дешифровать ключи, используя RSACryptoServiceProvider. Visual Studio предложила добавить System.Security.Cryptography.Csp версии 4.0.0 в мои зависимости. Я принимаю, и на Windows все работает отлично. Но когда я развернул его на Ubuntu 16.04 RSACryptoServiceProvider, методы начали бросать исключение PlatformNotSupportedException. Я использую неправильную сборку? Я нашел https://github.com/dotnet/corefx/tree/v1.0.0/src/System.Security.Cryptography.Csp и есть версия 1.0.0. Это то, что мне нужно? Как добавить его в свой проект?System.Security.Cryptography.Csp on Ubuntu 16.04

ответ

5

RSACryptoServiceProvider основан на CryptoAPI, неуправляемом для Windows API. Поскольку он недоступен в Linux, исключение PlatformNotSupportedException выбрано во время выполнения.

Вместо этого рассмотрите ссылку System.Security.Cryptography.Algorithms и с помощью RSA.Create(), чтобы получить реализацию, совместимую с вашей средой (на Linux вы получите экземпляр RSAOpenSsl).

+0

Спасибо! «RSA» отлично работает. Но все же я не понимаю, как включать специальные инструменты Windows в пакеты Net Standart ... – Slip

+0

Не всем нужна или нужна поддержка кросс-платформенной платформы .NET Core. Использование пакетов, специфичных для реализации, позволяет напрямую использовать «RSACryptoServiceProvider», «RSACng» или «RSAOpenSsl», что позволяет использовать расширенные сценарии (например, вы можете использовать «CngKey», который использует определенный поставщик хранилища ключей при использовании «RSACng») – Pinpoint