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

Комментарии

Этот класс следует использовать непосредственно при взаимодействии платформ с библиотекой Windows CNG.This class should only be used directly when doing platform interop with the Windows CNG library. Если взаимодействие с платформой не требуется, следует использовать ECDsa.Create фабричные методы вместо определенной производной реализации.When platform interop is not needed, you should use the ECDsa.Create factory methods instead of a specific derived implementation.

Конструкторы

ECDsaCng()

Инициализирует новый экземпляр класса ECDsaCng с парой случайных пар ключей.Initializes a new instance of the ECDsaCng class with a random key pair.

ECDsaCng(CngKey)

Инициализирует новый экземпляр класса ECDsaCng, используя указанный объект CngKey.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 specified target 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

Получает или задает размер модуля ключа (в битах), используемого алгоритмом асимметричного шифрования.Gets or sets the size, in bits, of the key modulus used by the asymmetric algorithm.

LegalKeySizes

Возвращает размеры ключа (в битах), которые поддерживаются методом задания свойства KeySize.Gets the key sizes, in bits, that are supported by the KeySize property setter.

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)

Создает новую пару открытого и закрытого эфемерных ключей для указанной кривой, заменяя текущий ключ.Generates a new ephemeral public/private key pair for the specified curve, replacing the current key.

GetHashCode()

Служит в качестве хэш-функции по умолчанию.Serves as the default hash function.

(Унаследовано от Object)
GetType()

Возвращает объект Type для текущего экземпляра.Gets 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()

Возвращает строку, представляющую текущий объект.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)

Пытается с помощью указанного алгоритма хэширования вычислить хэш-значение указанного диапазона байтов только для чтения и записать результат в предоставленное назначение.Attempts to compute the hash value of the specified read-only span of bytes into the provided destination by using the specified hashing algorithm.

(Унаследовано от ECDsa)
TrySignData(ReadOnlySpan<Byte>, Span<Byte>, HashAlgorithmName, Int32)

Пытается с помощью указанного алгоритма хэширования и используемого ключа вычислить цифровую подпись ECDSA указанного диапазона байтов только для чтения и записать результат в предоставленное назначение.Attempts to compute the ECDSA digital signature for the specified read-only span of bytes into the provided destination by using the specified hashing algorithm and the current key.

(Унаследовано от ECDsa)
TrySignHash(ReadOnlySpan<Byte>, Span<Byte>, Int32)

Пытается с помощью используемого ключа вычислить цифровую подпись ECDSA указанного диапазона байтов только для чтения, представляющего собой хэш данных, и записать результат в предоставленное назначение.Attempts to compute the ECDSA digital signature for the specified read-only span of bytes representing a data hash into the provided destination by using the current key.

(Унаследовано от ECDsa)
VerifyData(Byte[], Byte[])

Проверяет цифровую подпись указанных данных.Verifies the digital signature of the specified data.

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

Проверяет, подходит ли цифровая подпись для текущего ключа и заданных данных, с помощью указанного хэш-алгоритма.Verifies that a digital signature is appropriate for the current key and provided data with a specified hash algorithm.

(Унаследовано от 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 appropriate for the current key and provided portion of data with a specified hash algorithm.

(Унаследовано от ECDsa)
VerifyData(ReadOnlySpan<Byte>, ReadOnlySpan<Byte>, HashAlgorithmName)

Проверяет, подходит ли цифровая подпись для текущего ключа и заданных данных, с помощью указанного хэш-алгоритма.Verifies that a digital signature is appropriate for the current key and provided data with a specified hash algorithm.

(Унаследовано от 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 appropriate for the current key and provided data with a specified hash algorithm.

(Унаследовано от ECDsa)
VerifyHash(Byte[], Byte[])

Проверяет, подходит ли цифровая подпись для используемого ключа и заданного хэша данных.Verifies that a digital signature is appropriate for the current key and provided data hash.

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

Проверяет, подходит ли цифровая подпись для используемого ключа и заданного хэша данных.Verifies that a digital signature is appropriate for the current key and provided data hash.

(Унаследовано от ECDsa)

Явные реализации интерфейса

IDisposable.Dispose()

Описание этого члена см. в разделе Dispose().For a description of this member, see Dispose().

(Унаследовано от AsymmetricAlgorithm)

Применяется к