Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Le firme digitali vengono generalmente applicate a valori hash che rappresentano dati di maggiori dimensioni. Nell'esempio che segue viene applicata una firma digitale a un valore hash. Innanzitutto viene creata una nuova istanza della classe RSACryptoServiceProvider per generare una coppia di chiavi pubblica/privata. Quindi RSACryptoServiceProvider viene passato a una nuova istanza della classe RSAPKCS1SignatureFormatter. In questo modo la chiave privata viene trasferita a RSAPKCS1SignatureFormatter, che esegue l'effettiva apposizione della firma digitale. Prima di firmare il codice hash, è necessario specificare un algoritmo hash da utilizzare. In questo esempio viene utilizzato l'algoritmo SHA1. Infine viene chiamato il metodo RSAPKCS1SignatureFormatter.CreateSignature per eseguire l'apposizione della firma.
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);
}
}
Firma di file XML
.NET Framework fornisce lo spazio dei nomi System.Security.Cryptography.XML che consente di firmare il linguaggio XML. La firma XML è importante quando si desidera verificare l'origine del linguaggio XML. Se si utilizza ad esempio un servizio di quotazione dei titoli di borsa che utilizza il linguaggio XML, è possibile verificarne l'origine se è presente la firma.
Le classi in questo spazio dei nomi seguono la raccomandazione "XML-Signature Syntax and Processing" del World Wide Web Consortium, descritta all'indirizzo www.w3.org (informazioni in lingua inglese).
Vedere anche
Concetti
Verifica di firme
Firme di crittografia