Compartilhar via


Gerando assinaturas

Assinaturas digital geralmente são aplicadas a valores de hash que representam dados maiores.O exemplo seguinte aplica uma assinatura digital para um valor de hash.Primeiro, uma nova instância do RSACryptoServiceProvider classe é criada emparelhara gerar uma pública/emparelharticular chave emparelhar. Em seguida, a RSACryptoServiceProvider passado para uma nova instância do RSAPKCS1SignatureFormatter classe. Isso transfere a chave particular para o RSAPKCS1SignatureFormatter, que realmente executa a assinatura digital.Antes você pode assinar código hash, você deve especificar um algoritmo de hash para usar.Este exemplo usa o algoritmo SHA1.Finalmente, a RSAPKCS1SignatureFormatter.CreateSignature método é chamado para realizar a assinatura.

Imports System
Imports System.Security.Cryptography

Module Module1
    Sub Main()
        'The hash value to sign.
        Dim HashValue As Byte() = {59, 4, 248, 102, 77, 97, 142, 201, 210, 12, 224, 93, 25, 41, 100, 197, 213, 134, 130, 135}

        'The value to hold the signed value.
        Dim SignedHashValue() As Byte

        'Generate a public/private key pair.
        Dim RSA As New RSACryptoServiceProvider()

        'Create an RSAPKCS1SignatureFormatter object and pass it 
        'the RSACryptoServiceProvider to transfer the private key.
        Dim RSAFormatter As New RSAPKCS1SignatureFormatter(RSA)

        'Set the hash algorithm to SHA1.
        RSAFormatter.SetHashAlgorithm("SHA1")

        'Create a signature for HashValue and assign it to 
        'SignedHashValue.
        SignedHashValue = RSAFormatter.CreateSignature(HashValue)
    End Sub
End Module

using System;
using System.Security.Cryptography;
class Class1
{
   static void Main()
   {
      //The hash value to sign.
      byte[] HashValue = {59,4,248,102,77,97,142,201,210,12,224,93,25,41,100,197,213,134,130,135};

      //The value to hold the signed value.
      byte[] SignedHashValue;

      //Generate a public/private key pair.
      RSACryptoServiceProvider RSA = new RSACryptoServiceProvider();

      //Create an RSAPKCS1SignatureFormatter object and pass it the 
      //RSACryptoServiceProvider to transfer the private key.
      RSAPKCS1SignatureFormatter RSAFormatter = new RSAPKCS1SignatureFormatter(RSA);

      //Set the hash algorithm to SHA1.
      RSAFormatter.SetHashAlgorithm("SHA1");

      //Create a signature for HashValue and assign it to 
      //SignedHashValue.
      SignedHashValue = RSAFormatter.CreateSignature(HashValue);
   }
}

Arquivos XML de assinatura

O .NET estrutura fornece a sistema.segurança.criptografia.XML namespace, que permite que você assinar XML.Assinatura XML é importante quando você deseja verificar que o XML se originam de uma determinada fonte.Por exemplo, se você estiver usando um serviço de cotação de ações que usa o XML, você pode verificar fonte do XML se ele está assinado.

As classes neste namespace seguir a recomendação do World Wide Web Consortium "Assinatura XML sintaxe e processamento," descrita em www.w3.org.

Consulte também

Conceitos

Verificando assinaturas

Assinaturas de criptografia

Outros recursos

Tarefas de criptografia

Serviços de criptografia