ECDsaCng 类

定义

提供椭圆曲线数字签名算法 (ECDSA) 的下一代加密技术 (CNG) 实现。

public ref class ECDsaCng sealed : System::Security::Cryptography::ECDsa
public sealed class ECDsaCng : System.Security.Cryptography.ECDsa
type ECDsaCng = class
    inherit ECDsa
Public NotInheritable Class ECDsaCng
Inherits ECDsa
继承
继承

示例

下面的示例演示如何使用 ECDsaCng 类对消息进行签名,以及如何使用 签名来验证消息是否未被更改。

using System;
using System.IO;
using System.Security.Cryptography;
using System.Text;

class Alice
{
    public static void Main(string[] args)
    {
        Bob bob = new Bob();
        using (ECDsaCng dsa = new ECDsaCng())
        {
            dsa.HashAlgorithm = CngAlgorithm.Sha256;
             bob.key = dsa.Key.Export(CngKeyBlobFormat.EccPublicBlob);

             byte[] data = new byte[] { 21, 5, 8, 12, 207 };

             byte[] signature = dsa.SignData(data);

             bob.Receive(data, signature);
            }
    }
}
public class Bob
{
    public byte[] key;

    public void Receive(byte[] data, byte[] signature)
    {
        using (ECDsaCng ecsdKey = new ECDsaCng(CngKey.Import(key, CngKeyBlobFormat.EccPublicBlob)))
        {
            if (ecsdKey.VerifyData(data, signature))
                Console.WriteLine("Data is good");
            else
                Console.WriteLine("Data is bad");
        }
    }
}
Imports System.IO
Imports System.Security.Cryptography
Imports System.Text

Class Alice

    Public Shared Sub Main(ByVal args() As String)
        Dim bob As New Bob()
        If (True) Then
            Using dsa As New ECDsaCng()
                    dsa.HashAlgorithm = CngAlgorithm.Sha256
                    bob.key = dsa.Key.Export(CngKeyBlobFormat.EccPublicBlob)
                    Dim data() As Byte = {21, 5, 8, 12, 207}
                    Dim signature As Byte() = dsa.SignData(data)
                    bob.Receive(data, signature)
            End Using
        End If

    End Sub
End Class


Public Class Bob
    Public key() As Byte

    Public Sub Receive(ByVal data() As Byte, ByVal signature() As Byte)
        Using ecsdKey As New ECDsaCng(CngKey.Import(key, CngKeyBlobFormat.EccPublicBlob))
                If ecsdKey.VerifyData(data, signature) Then
                    Console.WriteLine("Data is good")
                Else
                    Console.WriteLine("Data is bad")
                End If
        End Using

    End Sub
End Class

注解

仅当与 Windows CNG 库执行平台互操作时,才应直接使用此类。 当不需要平台互操作时,应使用 ECDsa.Create 工厂方法,而不是特定的派生实现。

构造函数

ECDsaCng()

使用随机的密钥对初始化 ECDsaCng 类的新实例。

ECDsaCng(CngKey)

使用指定的 CngKey 对象初始化 ECDsaCng 类的新实例。

ECDsaCng(ECCurve)

初始化 ECDsaCng 类的新实例,该类的公钥/私钥对通过指定曲线生成。

ECDsaCng(Int32)

使用指定的目标密钥大小初始化 ECDsaCng 类的新实例。

字段

KeySizeValue

表示非对称算法所用密钥模块的大小(以位为单位)。

(继承自 AsymmetricAlgorithm)
LegalKeySizesValue

指定非对称算法支持的密钥大小。

(继承自 AsymmetricAlgorithm)

属性

HashAlgorithm

获取或设置签名和验证数据时要使用的哈希算法。

Key

获取或设置对数据进行签名或验证时要使用的键。

KeyExchangeAlgorithm

获取密钥交换算法的名称。

(继承自 ECDsa)
KeySize

获取或设置非对称算法所用密钥模块的大小(以位为单位)。

KeySize

获取或设置非对称算法所用密钥模块的大小(以位为单位)。

(继承自 AsymmetricAlgorithm)
LegalKeySizes

获取 KeySize 属性资源库支持的密钥大小(以位为单位)。

LegalKeySizes

获取非对称算法支持的密钥大小。

(继承自 AsymmetricAlgorithm)
SignatureAlgorithm

获取签名算法的名称。

(继承自 ECDsa)

方法

Clear()

释放 AsymmetricAlgorithm 类使用的所有资源。

(继承自 AsymmetricAlgorithm)
Dispose()

释放 AsymmetricAlgorithm 类的当前实例所使用的所有资源。

(继承自 AsymmetricAlgorithm)
Dispose(Boolean)

释放 AsymmetricAlgorithm 类使用的非托管资源,并可以选择释放托管资源。

(继承自 AsymmetricAlgorithm)
Equals(Object)

确定指定对象是否等于当前对象。

(继承自 Object)
ExportECPrivateKey()

以 ECPrivateKey 格式导出当前密钥。

(继承自 ECDsa)
ExportECPrivateKeyPem()

以 ECPrivateKey 格式导出当前密钥(PEM 编码)。

(继承自 ECAlgorithm)
ExportEncryptedPkcs8PrivateKey(ReadOnlySpan<Byte>, PbeParameters)

使用基于字节的密码以 PKCS#8 EncryptedPrivateKeyInfo 格式导出当前密钥。

ExportEncryptedPkcs8PrivateKey(ReadOnlySpan<Byte>, PbeParameters)

使用基于字节的密码以 PKCS#8 EncryptedPrivateKeyInfo 格式导出当前密钥。

(继承自 AsymmetricAlgorithm)
ExportEncryptedPkcs8PrivateKey(ReadOnlySpan<Char>, PbeParameters)

使用基于字符的密码以 PKCS#8 EncryptedPrivateKeyInfo 格式导出当前密钥。

ExportEncryptedPkcs8PrivateKey(ReadOnlySpan<Char>, PbeParameters)

使用基于字符的密码以 PKCS#8 EncryptedPrivateKeyInfo 格式导出当前密钥。

(继承自 AsymmetricAlgorithm)
ExportEncryptedPkcs8PrivateKeyPem(ReadOnlySpan<Byte>, PbeParameters)

使用基于字节的密码(PEM 编码)导出 PKCS#8 EncryptedPrivateKeyInfo 格式的当前密钥。

(继承自 AsymmetricAlgorithm)
ExportEncryptedPkcs8PrivateKeyPem(ReadOnlySpan<Char>, PbeParameters)

使用基于字符的密码(PEM 编码)导出 PKCS#8 EncryptedPrivateKeyInfo 格式的当前密钥。

(继承自 AsymmetricAlgorithm)
ExportExplicitParameters(Boolean)

将椭圆曲线加密 (ECC) 对象使用的密钥和显式曲线参数导出到 ECParameters 对象。

ExportExplicitParameters(Boolean)

在派生类中替代时,导出椭圆曲线的显式参数。

(继承自 ECDsa)
ExportParameters(Boolean)

将椭圆曲线加密 (ECC) 对象使用的密钥导出到 ECParameters 对象。 如果密钥作为已命名曲线创建,Curve 字段包含已命名的曲线参数,否则将包含显式参数。

ExportParameters(Boolean)

在派生类中替代时,导出椭圆曲线的已命名或显式参数。 如果曲线具有一个名称,Curve 字段包含已命名的曲线参数,否则将包含显式参数。

(继承自 ECDsa)
ExportPkcs8PrivateKey()

以 PKCS#8 PrivateKeyInfo 格式导出当前密钥。

(继承自 AsymmetricAlgorithm)
ExportPkcs8PrivateKeyPem()

导出 PKCS#8 PrivateKeyInfo 格式(PEM 编码)的当前密钥。

(继承自 AsymmetricAlgorithm)
ExportSubjectPublicKeyInfo()

以 X.509 SubjectPublicKeyInfo 格式导出当前密钥的公钥部分。

(继承自 AsymmetricAlgorithm)
ExportSubjectPublicKeyInfoPem()

以 X.509 SubjectPublicKeyInfo 格式(PEM 编码)导出当前密钥的公钥部分。

(继承自 AsymmetricAlgorithm)
FromXmlString(String)

未实现此方法。

FromXmlString(String)

在所有情况下均引发此方法。

(继承自 ECDsa)
FromXmlString(String, ECKeyXmlFormat)
已过时.

使用指定的格式反序列化 XML 字符串中的密钥信息。

GenerateKey(ECCurve)

为指定曲线生成新的临时公钥/私钥对,替换当前密钥。

GenerateKey(ECCurve)

在派生类中替换时,为指定曲线生成新的临时公钥/私钥对,替换当前密钥。

(继承自 ECDsa)
GetHashCode()

作为默认哈希函数。

(继承自 Object)
GetMaxSignatureSize(DSASignatureFormat)

获取此密钥按指定格式生成的签名的最大尺寸(以字节为单位)。

(继承自 ECDsa)
GetType()

获取当前实例的 Type

(继承自 Object)
HashData(Byte[], Int32, Int32, HashAlgorithmName)

在派生类中进行重写后,通过使用指定的哈希算法计算字节数组指定部分的哈希值。

(继承自 ECDsa)
HashData(Stream, HashAlgorithmName)

在派生类中进行重写后,通过使用指定的哈希算法计算指定二进制流的哈希值。

(继承自 ECDsa)
ImportECPrivateKey(ReadOnlySpan<Byte>, Int32)

从 ECPrivateKey 结构中导入公共/私有密钥对,替换此对象的密钥。

(继承自 ECDsa)
ImportEncryptedPkcs8PrivateKey(ReadOnlySpan<Byte>, ReadOnlySpan<Byte>, Int32)

使用基于字节的密码解密之后,从 PKCS#8 EncryptedPrivateKeyInfo 结构中导入公/私钥对,以替换此对象的密钥。

ImportEncryptedPkcs8PrivateKey(ReadOnlySpan<Byte>, ReadOnlySpan<Byte>, Int32)

使用基于字节的密码解密之后,从 PKCS#8 EncryptedPrivateKeyInfo 结构中导入公/私钥对,以替换此对象的密钥。

(继承自 ECDsa)
ImportEncryptedPkcs8PrivateKey(ReadOnlySpan<Char>, ReadOnlySpan<Byte>, Int32)

使用基于字符的密码解密之后,从 PKCS#8 EncryptedPrivateKeyInfo 结构中导入公/私钥对,以替换此对象的密钥。

ImportEncryptedPkcs8PrivateKey(ReadOnlySpan<Char>, ReadOnlySpan<Byte>, Int32)

使用基于字符的密码解密之后,从 PKCS#8 EncryptedPrivateKeyInfo 结构中导入公/私钥对,以替换此对象的密钥。

(继承自 ECDsa)
ImportFromEncryptedPem(ReadOnlySpan<Char>, ReadOnlySpan<Byte>)

导入已加密的 RFC 7468 PEM 编码的私钥,替换此对象的密钥。

(继承自 ECDsa)
ImportFromEncryptedPem(ReadOnlySpan<Char>, ReadOnlySpan<Char>)

导入已加密的 RFC 7468 PEM 编码的私钥,替换此对象的密钥。

(继承自 ECDsa)
ImportFromPem(ReadOnlySpan<Char>)

导入 RFC 7468 PEM 编码的密钥,替换此对象的密钥。

(继承自 ECDsa)
ImportParameters(ECParameters)

通过创建为参数结构创建新的 CngKey,来替换当前实例使用的现有密钥。

ImportParameters(ECParameters)

当在派生类中重写时,导入指定的参数。

(继承自 ECDsa)
ImportPkcs8PrivateKey(ReadOnlySpan<Byte>, Int32)

解密后,从 PKCS#8 PrivateKeyInfo 结构中导入公/私钥对,以替换此对象的密钥。

ImportPkcs8PrivateKey(ReadOnlySpan<Byte>, Int32)

解密后,从 PKCS#8 PrivateKeyInfo 结构中导入公/私钥对,以替换此对象的密钥。

(继承自 ECDsa)
ImportSubjectPublicKeyInfo(ReadOnlySpan<Byte>, Int32)

解密后,从 X.509 SubjectPublicKeyInfo 结构中导入公钥,以替换此对象的密钥。

(继承自 ECDsa)
MemberwiseClone()

创建当前 Object 的浅表副本。

(继承自 Object)
SignData(Byte[])

生成指定数据的签名。

SignData(Byte[], HashAlgorithmName)

使用指定的哈希算法计算指定字节数组的哈希值,并对生成的哈希值进行签名。

(继承自 ECDsa)
SignData(Byte[], HashAlgorithmName, DSASignatureFormat)

计算指定数据的哈希值,并使用指定的签名格式对其进行签名。

(继承自 ECDsa)
SignData(Byte[], Int32, Int32)

从指定的偏移量开始生成指定长度的数据的数字签名。

SignData(Byte[], Int32, Int32, HashAlgorithmName)

使用指定的哈希算法计算指定字节数组的一个部分的哈希值,并对生成的哈希值进行签名。

(继承自 ECDsa)
SignData(Byte[], Int32, Int32, HashAlgorithmName, DSASignatureFormat)

计算指定数据的哈希值,并使用指定的签名格式对其进行签名。

(继承自 ECDsa)
SignData(ReadOnlySpan<Byte>, HashAlgorithmName)

计算指定数据的哈希值,并对其进行签名。

(继承自 ECDsa)
SignData(ReadOnlySpan<Byte>, HashAlgorithmName, DSASignatureFormat)

计算指定数据的哈希值,并使用指定的签名格式对其进行签名。

(继承自 ECDsa)
SignData(ReadOnlySpan<Byte>, Span<Byte>, HashAlgorithmName)

计算指定数据的哈希值,并将其以指示的格式签名到提供的缓冲区中。

(继承自 ECDsa)
SignData(ReadOnlySpan<Byte>, Span<Byte>, HashAlgorithmName, DSASignatureFormat)

计算指定数据的哈希值,并将其以指示的格式签名到提供的缓冲区中。

(继承自 ECDsa)
SignData(Stream)

通过读取数据流的末尾内容生成指定数据流的签名。

SignData(Stream, HashAlgorithmName)

使用指定的哈希算法计算指定流的哈希值,并对生成的哈希值进行签名。

(继承自 ECDsa)
SignData(Stream, HashAlgorithmName, DSASignatureFormat)

计算指定数据的哈希值,并使用指定的签名格式对其进行签名。

(继承自 ECDsa)
SignDataCore(ReadOnlySpan<Byte>, HashAlgorithmName, DSASignatureFormat)

计算指定数据的哈希值,并使用指定的签名格式对其进行签名。

(继承自 ECDsa)
SignDataCore(Stream, HashAlgorithmName, DSASignatureFormat)

计算指定数据的哈希值,并使用指定的签名格式对其进行签名。

(继承自 ECDsa)
SignHash(Byte[])

为指定哈希值生成签名。

SignHash(Byte[], DSASignatureFormat)

采用指定格式为指定的哈希值计算 ECDSA 签名。

(继承自 ECDsa)
SignHash(ReadOnlySpan<Byte>)

计算指定哈希值的 ECDSA 签名。

(继承自 ECDsa)
SignHash(ReadOnlySpan<Byte>, DSASignatureFormat)

采用指定格式为指定的哈希值计算 ECDSA 签名。

(继承自 ECDsa)
SignHash(ReadOnlySpan<Byte>, Span<Byte>)

将指定哈希值的 ECDSA 签名计算到提供的缓冲区中。

(继承自 ECDsa)
SignHash(ReadOnlySpan<Byte>, Span<Byte>, DSASignatureFormat)

将指定哈希值的 ECDSA 签名以指示的格式计算到提供的缓冲区中。

(继承自 ECDsa)
SignHashCore(ReadOnlySpan<Byte>, DSASignatureFormat)

采用指定格式为指定的哈希值计算 ECDSA 签名。

(继承自 ECDsa)
ToString()

返回表示当前对象的字符串。

(继承自 Object)
ToXmlString(Boolean)

未实现此方法。

ToXmlString(Boolean)

在所有情况下均引发此方法。

(继承自 ECDsa)
ToXmlString(ECKeyXmlFormat)
已过时.

使用指定的格式将密钥信息序列化为 XML 字符串。

TryExportECPrivateKey(Span<Byte>, Int32)

尝试以 ECPrivateKey 格式将当前密钥导入所提供的缓冲区。

(继承自 ECDsa)
TryExportECPrivateKeyPem(Span<Char>, Int32)

尝试将 PEM 编码的 ECPrivateKey 格式的当前密钥导出到提供的缓冲区中。

(继承自 ECAlgorithm)
TryExportEncryptedPkcs8PrivateKey(ReadOnlySpan<Byte>, PbeParameters, Span<Byte>, Int32)

尝试使用基于字节的密码以 PKCS#8 EncryptedPrivateKeyInfo 格式将当前密钥导出到所提供的缓冲区。

TryExportEncryptedPkcs8PrivateKey(ReadOnlySpan<Byte>, PbeParameters, Span<Byte>, Int32)

尝试使用基于字节的密码以 PKCS#8 EncryptedPrivateKeyInfo 格式将当前密钥导出到所提供的缓冲区。

(继承自 ECDsa)
TryExportEncryptedPkcs8PrivateKey(ReadOnlySpan<Char>, PbeParameters, Span<Byte>, Int32)

尝试使用基于字符的密码以 PKCS#8 EncryptedPrivateKeyInfo 格式将当前密钥导入所提供的缓冲区。

TryExportEncryptedPkcs8PrivateKey(ReadOnlySpan<Char>, PbeParameters, Span<Byte>, Int32)

尝试使用基于字符的密码以 PKCS#8 EncryptedPrivateKeyInfo 格式将当前密钥导入所提供的缓冲区。

(继承自 ECDsa)
TryExportEncryptedPkcs8PrivateKeyPem(ReadOnlySpan<Byte>, PbeParameters, Span<Char>, Int32)

尝试使用基于字节的密码(PEM 编码)导出 PKCS#8 EncryptedPrivateKeyInfo 格式的当前密钥。

(继承自 AsymmetricAlgorithm)
TryExportEncryptedPkcs8PrivateKeyPem(ReadOnlySpan<Char>, PbeParameters, Span<Char>, Int32)

使用基于字符的密码(PEM 编码)导出 PKCS#8 EncryptedPrivateKeyInfo 格式的当前密钥。

(继承自 AsymmetricAlgorithm)
TryExportPkcs8PrivateKey(Span<Byte>, Int32)

尝试以 PKCS#8 PrivateKeyInfo 格式将当前密钥导出到所提供的缓冲区。

TryExportPkcs8PrivateKey(Span<Byte>, Int32)

尝试以 PKCS#8 PrivateKeyInfo 格式将当前密钥导出到所提供的缓冲区。

(继承自 ECDsa)
TryExportPkcs8PrivateKeyPem(Span<Char>, Int32)

尝试将 PEM 编码 PKCS#8 PrivateKeyInfo 格式的当前密钥导出到提供的缓冲区中。

(继承自 AsymmetricAlgorithm)
TryExportSubjectPublicKeyInfo(Span<Byte>, Int32)

尝试以 X.509 SubjectPublicKeyInfo 格式将当前密钥导出到所提供的缓冲区。

(继承自 ECDsa)
TryExportSubjectPublicKeyInfoPem(Span<Char>, Int32)

尝试将 PEM 编码的 X.509 SubjectPublicKeyInfo 格式的当前密钥导出到提供的缓冲区中。

(继承自 AsymmetricAlgorithm)
TryHashData(ReadOnlySpan<Byte>, Span<Byte>, HashAlgorithmName, Int32)

尝试使用指定的哈希算法,将指定的只读字节范围的哈希值计算入提供的目标。

(继承自 ECDsa)
TrySignData(ReadOnlySpan<Byte>, Span<Byte>, HashAlgorithmName, DSASignatureFormat, Int32)

尝试在提供的缓冲区中以指定的格式为指定的数据创建 ECDSA 签名。

(继承自 ECDsa)
TrySignData(ReadOnlySpan<Byte>, Span<Byte>, HashAlgorithmName, Int32)

尝试使用指定的哈希算法和当前密钥,将指定的只读字节范围的 ECDSA 数字签名计算入提供的目标。

(继承自 ECDsa)
TrySignDataCore(ReadOnlySpan<Byte>, Span<Byte>, HashAlgorithmName, DSASignatureFormat, Int32)

尝试在提供的缓冲区中以指定的格式为指定的数据创建 ECDSA 签名。

(继承自 ECDsa)
TrySignHash(ReadOnlySpan<Byte>, Span<Byte>, DSASignatureFormat, Int32)

尝试在提供的缓冲区中以指定的格式为指定的哈希值创建 ECDSA 签名。

(继承自 ECDsa)
TrySignHash(ReadOnlySpan<Byte>, Span<Byte>, Int32)

尝试使用当前密钥,将指定的表示数据哈希只读字节范围的 ECDSA 数字签名计算入提供的目标。

TrySignHash(ReadOnlySpan<Byte>, Span<Byte>, Int32)

尝试使用当前密钥,将指定的表示数据哈希只读字节范围的 ECDSA 数字签名计算入提供的目标。

(继承自 ECDsa)
TrySignHashCore(ReadOnlySpan<Byte>, Span<Byte>, DSASignatureFormat, Int32)

尝试在提供的缓冲区中以指定的格式为指定的哈希值创建 ECDSA 签名。

(继承自 ECDsa)
VerifyData(Byte[], Byte[])

验证指定的数据的数字签名。

VerifyData(Byte[], Byte[], HashAlgorithmName)

验证数字签名是否适用于当前密钥和使用指定的哈希算法提供的数据。

(继承自 ECDsa)
VerifyData(Byte[], Byte[], HashAlgorithmName, DSASignatureFormat)

验证数字签名对于所提供的数据是否有效。

(继承自 ECDsa)
VerifyData(Byte[], Int32, Int32, Byte[])

从指定的偏移量开始验证指定长度的数据的签名。

VerifyData(Byte[], Int32, Int32, Byte[], HashAlgorithmName)

使用指定的哈希算法验证数字签名是否适用于当前密钥和提供的数据部分。

(继承自 ECDsa)
VerifyData(Byte[], Int32, Int32, Byte[], HashAlgorithmName, DSASignatureFormat)

验证数字签名对于所提供的数据是否有效。

(继承自 ECDsa)
VerifyData(ReadOnlySpan<Byte>, ReadOnlySpan<Byte>, HashAlgorithmName)

验证数字签名是否适用于当前密钥和使用指定的哈希算法提供的数据。

(继承自 ECDsa)
VerifyData(ReadOnlySpan<Byte>, ReadOnlySpan<Byte>, HashAlgorithmName, DSASignatureFormat)

验证数字签名对于所提供的数据是否有效。

(继承自 ECDsa)
VerifyData(Stream, Byte[])

通过读取数据流的末尾内容验证指定数据流的数字签名。

VerifyData(Stream, Byte[], HashAlgorithmName)

验证数字签名是否适用于当前密钥和使用指定的哈希算法提供的数据。

(继承自 ECDsa)
VerifyData(Stream, Byte[], HashAlgorithmName, DSASignatureFormat)

验证数字签名对于所提供的数据是否有效。

(继承自 ECDsa)
VerifyDataCore(ReadOnlySpan<Byte>, ReadOnlySpan<Byte>, HashAlgorithmName, DSASignatureFormat)

验证数字签名对于所提供的数据是否有效。

(继承自 ECDsa)
VerifyDataCore(Stream, ReadOnlySpan<Byte>, HashAlgorithmName, DSASignatureFormat)

验证数字签名对于所提供的数据是否有效。

(继承自 ECDsa)
VerifyHash(Byte[], Byte[])

验证数字签名是否适用于当前密钥和提供的数据哈希。

VerifyHash(Byte[], Byte[], DSASignatureFormat)

验证数字签名对于所提供的哈希是否有效。

(继承自 ECDsa)
VerifyHash(ReadOnlySpan<Byte>, ReadOnlySpan<Byte>)

验证数字签名是否适用于当前密钥和提供的数据哈希。

VerifyHash(ReadOnlySpan<Byte>, ReadOnlySpan<Byte>)

验证数字签名是否适用于当前密钥和提供的数据哈希。

(继承自 ECDsa)
VerifyHash(ReadOnlySpan<Byte>, ReadOnlySpan<Byte>, DSASignatureFormat)

验证数字签名对于所提供的哈希是否有效。

(继承自 ECDsa)
VerifyHashCore(ReadOnlySpan<Byte>, ReadOnlySpan<Byte>, DSASignatureFormat)

验证数字签名对于所提供的哈希是否有效。

(继承自 ECDsa)

显式接口实现

IDisposable.Dispose()

此 API 支持产品基础结构,不能在代码中直接使用。

有关此成员的说明,请参见 Dispose()

(继承自 AsymmetricAlgorithm)

适用于