1

我正在.NET 中实现 ECDSA 密钥和证书,我需要存储这些密钥,以便我可以通过新的签名重用它们。对于 RSA,我使用的是 RSACryptoServiceProvider 类,但我没有看到任何与 ECDsa 和 ECDsaCng 类相似的东西。

我只见过 DSACryptoServiceProvider 和一个旧的 ECDsaCryptoServiceProvider 到 Framework 4.3(有点旧)。

请问有谁知道像 RSA 一样存储 ECDSA 密钥的方法吗?

4

1 回答 1

3

假设您的意思是您希望将密钥保存到 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 中尚不存在。

于 2016-09-29T05:36:29.800 回答