Ubuntu 16.04中的System.Security.Cryptography.Csp

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版本。这就是我需要的吗?我该如何将它添加到我的项目中?
1个回答

6

RSACryptoServiceProvider是基于CryptoAPI的Windows专用非托管API。由于它在Linux上不可用,因此会在运行时抛出PlatformNotSupportedException异常。

相反,考虑引用System.Security.Cryptography.Algorithms并使用RSA.Create()来获取与您的环境兼容的实现(在Linux上,您将获得一个RSAOpenSsl实例)。


1
谢谢!RSA运行良好。但我仍然不明白为什么要在Net Standart包中包含Windows特定工具的意义所在... - Slip
并非每个人都需要或希望在 .NET Core 中使用跨平台支持。使用特定于实现的包允许直接使用 RSACryptoServiceProviderRSACngRSAOpenSsl,从而实现高级方案(例如,在使用 RSACng 时可以使用依赖特定密钥存储提供程序的 CngKey)。 - Kévin Chalet

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接