我正在.NET 中实现 ECDSA 密钥和证书,我需要存储这些密钥,以便我可以通过新的签名重用它们。对于 RSA,我使用的是 RSACryptoServiceProvider 类,但我没有看到任何与 ECDsa 和 ECDsaCng 类相似的东西。
我只见过 DSACryptoServiceProvider 和一个旧的 ECDsaCryptoServiceProvider 到 Framework 4.3(有点旧)。
请问有谁知道像 RSA 一样存储 ECDSA 密钥的方法吗?
我正在.NET 中实现 ECDSA 密钥和证书,我需要存储这些密钥,以便我可以通过新的签名重用它们。对于 RSA,我使用的是 RSACryptoServiceProvider 类,但我没有看到任何与 ECDsa 和 ECDsaCng 类相似的东西。
我只见过 DSACryptoServiceProvider 和一个旧的 ECDsaCryptoServiceProvider 到 Framework 4.3(有点旧)。
请问有谁知道像 RSA 一样存储 ECDSA 密钥的方法吗?
假设您的意思是您希望将密钥保存到 OS 密钥存储区(使用命名密钥的 RSACryptoServiceProvider),使用 CNG 的接口有点不同:
private static ECDsa CreateOrOpenECDsaKey(string keyName)
{
CngKey key;
if (CngKey.Exists(keyName))
{
key = CngKey.Open(keyName);
}
else
{
// You can also specify options here, like if it should be exportable, in a
// different overload.
key = CngKey.Create(CngAlgorithm.ECDsaP521, keyName);
}
// The ECDsaCng constructor will duplicate the key reference, so we can close this one.
using (key)
{
return new ECDsaCng(key);
}
}
如果您的意思是要像 RSAParameters 那样进行导出/导入,那么 .NET Core 中存在该功能,但 .NET Framework 中尚不存在。