Compartilhar via


Verificando assinaturas

Para verificar se os dados foi assinados por uma parte específica, você deve ter as seguintes informações:

  • A chave pública da parte que assinou os dados.

  • A assinatura digital.

  • Os dados que foi assinados.

  • O algoritmo de hash usado pelo signatário.

Para verificar uma assinatura assinada pelo RSAPKCS1SignatureFormatter classe, use o RSAPKCS1SignatureDeformatter classe. The RSAPKCS1SignatureDeformatter classe deve ser fornecido a chave pública do assinante.Você terá os valores do módulo e o expoente para especificar a chave pública.(A parte que gerou o emparelhar de chaves pública/particular deve fornecer esses valores.) Primeiro, crie um RSACryptoServiceProvider objeto para armazenar a chave pública que irá verificar a assinatura e, em seguida, inicializar um RSAParameters estrutura para os valores de módulo e expoente que especificam a chave pública.

O código a seguir mostra a criação de um RSAParameters estrutura.The Módulo propriedade estiver definida como o valor de uma matriz de byte chamada ModulusData e o Expoente propriedade estiver definida como o valor de uma matriz de byte chamada ExponentData.

Dim RSAKeyInfo As RSAParameters
RSAKeyInfo.Modulus = ModulusData
RSAKeyInfo.Exponent = ExponentData
RSAParameters RSAKeyInfo;
RSAKeyInfo.Modulus = ModulusData;
RSAKeyInfo.Exponent = ExponentData;

Após você ter criado o RSAParameters o objeto, você pode inicializar uma nova instância do RSACryptoServiceProvider os valores especificados em classeRSAParameters.The RSACryptoServiceProvider é, por sua vez, passado para o construtor de um RSAPKCS1SignatureDeformatter transferência a chave.

O exemplo a seguir ilustra esse processo.Neste exemplo, HashValue e SignedHashValue são matrizes de bytes fornecidos por um participante remoto. A parte remota tiver assinado o HashValue usando o algoritmo SHA1, produzindo a assinatura digital SignedHashValue. The RSAPKCS1SignatureDeformatter.VerifySignature method verifies that the digital signature is valid and was used to sign the HashValue.

Dim RSA As New RSACryptoServiceProvider()
RSA.ImportParameters(RSAKeyInfo)
Dim RSADeformatter As New RSAPKCS1SignatureDeformatter(RSA)
RSADeformatter.SetHashAlgorithm("SHA1")
If RSADeformatter.VerifySignature(HashValue, SignedHashValue) Then
   Console.WriteLine("The signature is valid.")
Else
   Console.WriteLine("The signture is not valid.")
End If
RSACryptoServiceProvider RSA = new RSACryptoServiceProvider();
RSA.ImportParameters(RSAKeyInfo);
RSAPKCS1SignatureDeformatter RSADeformatter = new RSAPKCS1SignatureDeformatter(RSA);
RSADeformatter.SetHashAlgorithm("SHA1");
if(RSADeformatter.VerifySignature(HashValue, SignedHashValue))
{
   Console.WriteLine("The signature is valid.");
}
else
{
   Console.WriteLine("The signature is not valid.");
}

Este fragmento de código exibirá"The signature is valid"se a assinatura for válida e"The signature is not valid"Se não estiver.

Consulte também

Conceitos

Gerando assinaturas

Assinaturas de criptografia

Outros recursos

Tarefas de criptografia

Serviços de criptografia