温馨提示:本文翻译自stackoverflow.com,查看原文请点击:cryptography - Using Asymmetric Key on .Net Core
.net-core cryptography rsa

cryptography - 在.Net Core上使用非对称密钥

发布于 2020-04-07 10:12:14

我正在尝试运行此示例中的代码

https://docs.microsoft.com/en-us/dotnet/standard/security/how-to-store-asymmetric-keys-in-a-key-container

在.NetCore 2.0(Web应用程序)下。

但是当我尝试使用执行任何行时

CspParameters

我收到以下错误

'CspParameters' requires Windows Cryptographic API (CAPI), which is not available on this platform.

请就我的解决方法提出建议。谢谢。

查看更多

提问者
MHugh
被浏览
97
bartonjs 2018-02-15 01:09

.NET不存储加密密钥,这最终是它所基于的加密平台提供(或不提供)的功能。

要将CspParameters与.NET Core一起使用,必须在Windows上运行;因为那是(旧的)Windows加密API的非常薄的包装。您不能在UAP中使用它,因为UAP仅允许使用较新的加密技术:下一代(CNG)API。

macOS可以将密钥存储在钥匙串中,但是.NET Core不提供用于读取密钥的API。

Linux(OpenSSL)除了“将其保存到文件并再次加载”之外没有任何密钥存储机制,但是.NET Core不支持从文件加载非对称密钥。

在跨平台机制中实现目标的唯一方法是使非对称密钥与X.509证书关联。如果您构建的X509Certificate2对象HasPrivateKey返回了true,则可以将其保存到PFX / PKCS#12文件,然后从该文件加载。或者,您可以将其添加到X509Store实例(CurrentUser的“我的”存储是在所有平台上最有效的存储),然后从X509Store实例读回。

尽管您引用的页面声称是在2017年编写的,但真正的含义是该内容于该日期从其先前在msdn.microsoft.com的位置移动。原始页面写于2008年(至少,这是对web.archive.org的首次访问),因此它早于.NET Core。