RSACryptoServiceProvider.VerifyHash Método

Definição

Verifica se uma assinatura digital é válida.

Sobrecargas

Nome Description
VerifyHash(Byte[], String, Byte[])

Verifica se uma assinatura digital é válida determinando o valor de hash na assinatura usando a chave pública fornecida e comparando-a com o valor de hash fornecido.

VerifyHash(Byte[], Byte[], HashAlgorithmName, RSASignaturePadding)

Verifica se uma assinatura digital é válida determinando o valor de hash na assinatura usando o algoritmo de hash e o preenchimento especificados e comparando-o com o valor de hash fornecido.

VerifyHash(Byte[], String, Byte[])

Verifica se uma assinatura digital é válida determinando o valor de hash na assinatura usando a chave pública fornecida e comparando-a com o valor de hash fornecido.

public:
 bool VerifyHash(cli::array <System::Byte> ^ rgbHash, System::String ^ str, cli::array <System::Byte> ^ rgbSignature);
public bool VerifyHash(byte[] rgbHash, string str, byte[] rgbSignature);
member this.VerifyHash : byte[] * string * byte[] -> bool
override this.VerifyHash : byte[] * string * byte[] -> bool
Public Function VerifyHash (rgbHash As Byte(), str As String, rgbSignature As Byte()) As Boolean

Parâmetros

rgbHash
Byte[]

O valor de hash dos dados assinados.

str
String

O OID (identificador de algoritmo de hash) usado para criar o valor de hash dos dados.

rgbSignature
Byte[]

Os dados de assinatura a serem verificados.

Retornos

true se a assinatura for válida; caso contrário, false.

Exceções

O rgbHash parâmetro é null.

-ou-

O rgbSignature parâmetro é null.

O CSP (provedor de serviços criptográficos) não pode ser adquirido.

-ou-

A assinatura não pode ser verificada.

Exemplos

O exemplo a seguir mostra como usar o VerifyHash método para verificar uma assinatura. Este exemplo de código faz parte de um exemplo maior fornecido para o SignHash método.

public bool VerifyHash(RSAParameters rsaParams, byte[] signedData, byte[] signature)
{
    RSACryptoServiceProvider rsaCSP = new RSACryptoServiceProvider();
    SHA1Managed hash = new SHA1Managed();
    byte[] hashedData;

    rsaCSP.ImportParameters(rsaParams);
    bool dataOK = rsaCSP.VerifyData(signedData, CryptoConfig.MapNameToOID("SHA1"), signature);
    hashedData = hash.ComputeHash(signedData);
    return rsaCSP.VerifyHash(hashedData, CryptoConfig.MapNameToOID("SHA1"), signature);
}
Public Function VerifyHash(ByVal rsaParams As RSAParameters, ByVal signedData() As Byte, ByVal signature() As Byte) As Boolean
    Dim rsaCSP As New RSACryptoServiceProvider()
    Dim hash As New SHA1Managed()
    Dim hashedData() As Byte
    Dim dataOK As Boolean

    rsaCSP.ImportParameters(rsaParams)
    dataOK = rsaCSP.VerifyData(signedData, CryptoConfig.MapNameToOID("SHA1"), signature)
    hashedData = hash.ComputeHash(signedData)
    Return rsaCSP.VerifyHash(hashedData, CryptoConfig.MapNameToOID("SHA1"), signature)
End Function 'VerifyHash

Comentários

Esse método verifica a RSA assinatura digital produzida pelo SignHash método. A assinatura é verificada obtendo o valor de hash da assinatura usando a chave pública com a qual foi assinada e comparando esse valor com o valor de hash dos dados fornecidos.

Os algoritmos de hash válidos são SHA1 e MD5. O identificador de algoritmo pode ser derivado do nome hash usando o MapNameToOID método.

Devido a problemas de colisão com SHA-1 e MD5, a Microsoft recomenda um modelo de segurança baseado no SHA-256 ou superior.

Confira também

Aplica-se a

VerifyHash(Byte[], Byte[], HashAlgorithmName, RSASignaturePadding)

Verifica se uma assinatura digital é válida determinando o valor de hash na assinatura usando o algoritmo de hash e o preenchimento especificados e comparando-o com o valor de hash fornecido.

public:
 override bool VerifyHash(cli::array <System::Byte> ^ hash, cli::array <System::Byte> ^ signature, System::Security::Cryptography::HashAlgorithmName hashAlgorithm, System::Security::Cryptography::RSASignaturePadding ^ padding);
public override bool VerifyHash(byte[] hash, byte[] signature, System.Security.Cryptography.HashAlgorithmName hashAlgorithm, System.Security.Cryptography.RSASignaturePadding padding);
override this.VerifyHash : byte[] * byte[] * System.Security.Cryptography.HashAlgorithmName * System.Security.Cryptography.RSASignaturePadding -> bool
Public Overrides Function VerifyHash (hash As Byte(), signature As Byte(), hashAlgorithm As HashAlgorithmName, padding As RSASignaturePadding) As Boolean

Parâmetros

hash
Byte[]

O valor de hash dos dados assinados.

signature
Byte[]

Os dados de assinatura a serem verificados.

hashAlgorithm
HashAlgorithmName

O nome do algoritmo de hash usado para criar o valor de hash.

padding
RSASignaturePadding

O preenchimento.

Retornos

true se a assinatura for válida; caso contrário, false.

Exceções

hashAlgorithm é null ou Empty.

hash é null.

-ou-

padding é null.

padding não é igual Pkcs1a .

Aplica-se a