ECDsaCng 类

定义

提供椭圆曲线数字签名算法 (ECDSA) 的下一代加密技术 (CNG) 实现。Provides a Cryptography Next Generation (CNG) implementation of the Elliptic Curve Digital Signature Algorithm (ECDSA).

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类对消息进行签名,以及如何使用签名来验证消息是否未被更改。The following example shows how to use the ECDsaCng class to sign a message and how to use the signature to verify that the message has not been altered.

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

注解

此类派生ECDsa自抽象基类。This class derives from the ECDsa abstract base class.

构造函数

ECDsaCng()

使用随机的密钥对初始化 ECDsaCng 类的新实例。Initializes a new instance of the ECDsaCng class with a random key pair.

ECDsaCng(CngKey)

使用指定的 CngKey 对象初始化 ECDsaCng 类的新实例。Initializes a new instance of the ECDsaCng class by using the specified CngKey object.

ECDsaCng(ECCurve)

初始化 ECDsaCng 类的新实例,该类的公钥/私钥对通过指定曲线生成。Initializes a new instance of the ECDsaCng class whose public/private key pair is generated over the specified curve.

ECDsaCng(Int32)

使用指定密钥大小,通过随机密钥对来初始化 ECDsaCng 类的新实例。Initializes a new instance of the ECDsaCng class with a random key pair, using the specified key size.

字段

KeySizeValue

表示非对称算法所用密钥模块的大小(以位为单位)。Represents the size, in bits, of the key modulus used by the asymmetric algorithm.

(继承自 AsymmetricAlgorithm)
LegalKeySizesValue

指定非对称算法支持的密钥大小。Specifies the key sizes that are supported by the asymmetric algorithm.

(继承自 AsymmetricAlgorithm)

属性

HashAlgorithm

获取或设置签名和验证数据时要使用的哈希算法。Gets or sets the hash algorithm to use when signing and verifying data.

Key

获取或设置对数据进行签名或验证时要使用的键。Gets or sets the key to use when signing and verifying data.

KeyExchangeAlgorithm

获取密钥交换算法的名称。Gets the name of the key exchange algorithm.

(继承自 ECDsa)
KeySize
LegalKeySizes
SignatureAlgorithm

获取签名算法的名称。Gets the name of the signature algorithm.

(继承自 ECDsa)

方法

Clear()

释放 AsymmetricAlgorithm 类使用的所有资源。Releases all resources used by the AsymmetricAlgorithm class.

(继承自 AsymmetricAlgorithm)
Dispose()

释放 AsymmetricAlgorithm 类的当前实例所使用的所有资源。Releases all resources used by the current instance of the AsymmetricAlgorithm class.

(继承自 AsymmetricAlgorithm)
Dispose(Boolean)

释放 AsymmetricAlgorithm 类使用的非托管资源,并可以选择释放托管资源。Releases the unmanaged resources used by the AsymmetricAlgorithm class and optionally releases the managed resources.

(继承自 AsymmetricAlgorithm)
Equals(Object)

确定指定的对象是否等于当前对象。Determines whether the specified object is equal to the current object.

(继承自 Object)
ExportECPrivateKey()

以 ECPrivateKey 格式导出当前密钥。Exports the current key in the ECPrivateKey format.

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

使用基于字节的密码以 PKCS#8 EncryptedPrivateKeyInfo 格式导出当前密钥。Exports the current key in the PKCS#8 EncryptedPrivateKeyInfo format with a byte-based password.

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

使用基于字符的密码以 PKCS#8 EncryptedPrivateKeyInfo 格式导出当前密钥。Exports the current key in the PKCS#8 EncryptedPrivateKeyInfo format with a char-based password.

(继承自 AsymmetricAlgorithm)
ExportExplicitParameters(Boolean)

将椭圆曲线加密 (ECC) 对象使用的密钥和显式曲线参数导出到 ECParameters 对象。Exports the key and explicit curve parameters used by the Elliptic curve cryptography (ECC) object into an ECParameters object.

ExportParameters(Boolean)

将椭圆曲线加密 (ECC) 对象使用的密钥导出到 ECParameters 对象。Exports the key used by the Elliptic curve cryptography (ECC) object into an ECParameters object. 如果密钥作为已命名曲线创建,Curve 字段包含已命名的曲线参数,否则将包含显式参数。If the key was created as a named curve, the Curve field contains named curve parameters; otherwise, it contains explicit parameters.

ExportPkcs8PrivateKey()

以 PKCS#8 PrivateKeyInfo 格式导出当前密钥。Exports the current key in the PKCS#8 PrivateKeyInfo format.

(继承自 AsymmetricAlgorithm)
ExportSubjectPublicKeyInfo()

以 X.509 SubjectPublicKeyInfo 格式导出当前密钥的公钥部分。Exports the public-key portion of the current key in the X.509 SubjectPublicKeyInfo format.

(继承自 AsymmetricAlgorithm)
FromXmlString(String)

未实现此方法。This method is not implemented.

FromXmlString(String, ECKeyXmlFormat)

使用指定的格式反序列化 XML 字符串中的密钥信息。Deserializes the key information from an XML string by using the specified format.

GenerateKey(ECCurve)

生成用于 ECDsaCng 算法的密钥。Generates a key to use for the ECDsaCng algorithm.

GetHashCode()

用作默认哈希函数。Serves as the default hash function.

(继承自 Object)
GetType()

获取当前实例的 TypeGets the Type of the current instance.

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

在派生类中进行重写后,通过使用指定的哈希算法计算字节数组指定部分的哈希值。When overridden in a derived class, computes the hash value of the specified portion of a byte array by using the specified hashing algorithm.

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

在派生类中进行重写后,通过使用指定的哈希算法计算指定二进制流的哈希值。When overridden in a derived class, computes the hash value of the specified binary stream by using the specified hashing algorithm.

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

从 ECPrivateKey 结构中导入公共/私有密钥对,替换此对象的密钥。Imports the public/private keypair from an ECPrivateKey structure, replacing the keys for this object.

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

使用基于字节的密码解密之后,从 PKCS#8 EncryptedPrivateKeyInfo 结构中导入公/私钥对,以替换此对象的密钥。Imports the public/private keypair from a PKCS#8 EncryptedPrivateKeyInfo structure after decrypting with a byte-based password, replacing the keys for this object.

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

使用基于字符的密码解密之后,从 PKCS#8 EncryptedPrivateKeyInfo 结构中导入公/私钥对,以替换此对象的密钥。Imports the public/private keypair from a PKCS#8 EncryptedPrivateKeyInfo structure after decrypting with a char-based password, replacing the keys for this object.

(继承自 ECDsa)
ImportParameters(ECParameters)

通过创建为参数结构创建新的 CngKey,来替换当前实例使用的现有密钥。Replaces the existing key that the current instance is working with by creating a new CngKey for the parameters structure.

ImportPkcs8PrivateKey(ReadOnlySpan<Byte>, Int32)

解密后,从 PKCS#8 PrivateKeyInfo 结构中导入公/私钥对,以替换此对象的密钥。Imports the public/private keypair from a PKCS#8 PrivateKeyInfo structure after decryption, replacing the keys for this object.

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

解密后,从 X.509 SubjectPublicKeyInfo 结构中导入公钥,以替换此对象的密钥。Imports the public key from an X.509 SubjectPublicKeyInfo structure after decryption, replacing the keys for this object.

(继承自 ECDsa)
MemberwiseClone()

创建当前 Object 的浅表副本。Creates a shallow copy of the current Object.

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

生成指定数据的签名。Generates a signature for the specified data.

SignData(Byte[], HashAlgorithmName)

使用指定的哈希算法计算指定字节数组的哈希值,并对生成的哈希值进行签名。Computes the hash value of the specified byte array using the specified hash algorithm and signs the resulting hash value.

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

从指定的偏移量开始生成指定长度的数据的数字签名。Generates a digital signature for the specified length of data, beginning at the specified offset.

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

使用指定的哈希算法计算指定字节数组的一个部分的哈希值,并对生成的哈希值进行签名。Computes the hash value of a portion of the specified byte array using the specified hash algorithm and signs the resulting hash value.

(继承自 ECDsa)
SignData(Stream)

通过读取数据流的末尾内容生成指定数据流的签名。Generates a signature for the specified data stream, reading to the end of the stream.

SignData(Stream, HashAlgorithmName)

使用指定的哈希算法计算指定流的哈希值,并对生成的哈希值进行签名。Computes the hash value of the specified stream using the specified hash algorithm and signs the resulting hash value.

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

为指定哈希值生成签名。Generates a signature for the specified hash value.

ToString()

返回一个表示当前对象的 string。Returns a string that represents the current object.

(继承自 Object)
ToXmlString(Boolean)

未实现此方法。This method is not implemented.

ToXmlString(ECKeyXmlFormat)

使用指定的格式将密钥信息序列化为 XML 字符串。Serializes the key information to an XML string by using the specified format.

TryExportECPrivateKey(Span<Byte>, Int32)

尝试以 ECPrivateKey 格式将当前密钥导入所提供的缓冲区。Attempts to export the current key in the ECPrivateKey format into a provided buffer.

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

尝试使用基于字节的密码以 PKCS#8 EncryptedPrivateKeyInfo 格式将当前密钥导出到所提供的缓冲区。Attempts to export the current key in the PKCS#8 EncryptedPrivateKeyInfo format into a provided buffer, using a byte-based password.

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

尝试使用基于字符的密码以 PKCS#8 EncryptedPrivateKeyInfo 格式将当前密钥导入所提供的缓冲区。Attempts to export the current key in the PKCS#8 EncryptedPrivateKeyInfo format into a provided buffer, using a char-based password.

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

尝试以 PKCS#8 PrivateKeyInfo 格式将当前密钥导出到所提供的缓冲区。Attempts to export the current key in the PKCS#8 PrivateKeyInfo format into a provided buffer.

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

尝试以 X.509 SubjectPublicKeyInfo 格式将当前密钥导出到所提供的缓冲区。Attempts to export the current key in the X.509 SubjectPublicKeyInfo format into a provided buffer.

(继承自 ECDsa)
TryHashData(ReadOnlySpan<Byte>, Span<Byte>, HashAlgorithmName, Int32) (继承自 ECDsa)
TrySignData(ReadOnlySpan<Byte>, Span<Byte>, HashAlgorithmName, Int32) (继承自 ECDsa)
TrySignHash(ReadOnlySpan<Byte>, Span<Byte>, Int32)
VerifyData(Byte[], Byte[])

验证指定的数据的数字签名。Verifies the digital signature of the specified data.

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

通过使用指定的哈希算法计算指定数据的哈希值,并将其与提供的签名进行比较,验证数字签名是否有效。Verifies that a digital signature is valid by calculating the hash value of the specified data using the specified hash algorithm and comparing it to the provided signature.

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

从指定的偏移量开始验证指定长度的数据的签名。Verifies a signature for the specified length of data, beginning at the specified offset.

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

通过使用指定的哈希算法计算字节数组一个部分中数据的哈希值,并将其与提供的签名进行比较,验证数字签名是否有效。Verifies that a digital signature is valid by calculating the hash value of the data in a portion of a byte array using the specified hash algorithm and comparing it to the provided signature.

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

通过读取数据流的末尾内容验证指定数据流的数字签名。Verifies the digital signature of the specified data stream, reading to the end of the stream.

VerifyData(Stream, Byte[], HashAlgorithmName)

通过使用指定的哈希算法计算指定流的哈希值,并将其与提供的签名进行比较,验证数字签名是否有效。Verifies that a digital signature is valid by calculating the hash value of the specified stream using the specified hash algorithm and comparing it to the provided signature.

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

针对指定的哈希值验证指定的数字签名。Verifies the specified digital signature against a specified hash value.

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

显式界面实现

IDisposable.Dispose()

有关此成员的说明,请参见 Dispose()For a description of this member, see Dispose().

(继承自 AsymmetricAlgorithm)

适用于