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)

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

ECDsaCng(ECCurve)

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

ECDsaCng(Int32)

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

字段

名称 说明
KeySizeValue

表示非对称算法使用的键模数的大小(以位为单位)。

(继承自 AsymmetricAlgorithm)
LegalKeySizesValue

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

(继承自 AsymmetricAlgorithm)

属性

名称 说明
HashAlgorithm

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

Key

获取或设置在签名和验证数据时要使用的密钥。

KeyExchangeAlgorithm

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

(继承自 ECDsa)
KeySize

获取或设置非对称算法使用的键模数的大小(以位为单位)。

KeySize

获取或设置非对称算法使用的键模数的大小(以位为单位)。

(继承自 AsymmetricAlgorithm)
LegalKeySizes

获取属性 setter 支持的 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 中。

ExportParameters(Boolean)

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

ExportPkcs8PrivateKey()

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

(继承自 AsymmetricAlgorithm)
ExportPkcs8PrivateKeyPem()

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

(继承自 AsymmetricAlgorithm)
ExportSubjectPublicKeyInfo()

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

(继承自 AsymmetricAlgorithm)
ExportSubjectPublicKeyInfoPem()

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

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

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

FromXmlString(String)

此方法未实现。

FromXmlString(String)

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

(继承自 ECDsa)
GenerateKey(ECCurve)

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

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 项,替换当前实例正在使用的现有键。

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[], HashAlgorithmName, DSASignatureFormat)

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

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

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

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

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

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

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

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

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

SignData(Byte[])

为指定数据生成签名。

SignData(ReadOnlySpan<Byte>, HashAlgorithmName, DSASignatureFormat)

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

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

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

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

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

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

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

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

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

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

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

(继承自 ECDsa)
SignData(Stream)

为指定的数据流生成签名,读取到流的末尾。

SignDataCore(ReadOnlySpan<Byte>, HashAlgorithmName, DSASignatureFormat)

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

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

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

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

以指示格式计算指定哈希值的 ECDSA 签名。

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

为指定的哈希值生成签名。

SignHash(ReadOnlySpan<Byte>, DSASignatureFormat)

以指示格式计算指定哈希值的 ECDSA 签名。

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

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

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

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

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

计算指定哈希值的 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[], HashAlgorithmName, DSASignatureFormat)

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

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

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

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

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

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

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

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

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

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

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

VerifyData(ReadOnlySpan<Byte>, ReadOnlySpan<Byte>, HashAlgorithmName, DSASignatureFormat)

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

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

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

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

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

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

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

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

验证指定数据流的数字签名,读取到流的末尾。

VerifyDataCore(ReadOnlySpan<Byte>, ReadOnlySpan<Byte>, HashAlgorithmName, DSASignatureFormat)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

(继承自 ECDsa)

显式接口实现

名称 说明
IDisposable.Dispose()

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

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

(继承自 AsymmetricAlgorithm)

适用于