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.
Annotazioni
Questo articolo si applica a Windows.
È possibile usare la CspParameters classe per accedere ai dispositivi di crittografia hardware. Ad esempio, è possibile usare questa classe per integrare l'applicazione con una smart card, un generatore di numeri casuali hardware o un'implementazione hardware di un particolare algoritmo di crittografia.
La CspParameters classe crea un provider di servizi di crittografia (CSP) che accede a un dispositivo di crittografia hardware installato correttamente. È possibile verificare la disponibilità di un CSP (fornitore di servizi di crittografia) esaminando la seguente chiave del Registro di sistema usando l'Editor del Registro di sistema (Regedit.exe): HKEY_LOCAL_MACHINE\Software\Microsoft\Cryptography\Defaults\Provider.
Per firmare i dati usando una scheda chiave
Creare una nuova istanza della CspParameters classe , passando il tipo di provider integer e il nome del provider al costruttore.
Passare i flag appropriati nella proprietà Flags dell'oggetto CspParameters appena creato. Ad esempio, passa il flag UseDefaultKeyContainer.
Creare una nuova istanza di una AsymmetricAlgorithm classe , ad esempio la RSACryptoServiceProvider classe , passando l'oggetto CspParameters al costruttore .
Firmare i dati usando uno dei
Sign
metodi e verificare i dati usando uno deiVerify
metodi .
Per generare un numero casuale usando un generatore di numeri casuali hardware
Creare una nuova istanza della CspParameters classe , passando il tipo di provider integer e il nome del provider al costruttore.
Creare una nuova istanza di RNGCryptoServiceProvider, passando l'oggetto CspParameters al costruttore .
Creare un valore casuale usando il GetBytes metodo o GetNonZeroBytes .
Esempio
Nell'esempio di codice seguente viene illustrato come firmare i dati usando una smart card. L'esempio di codice crea un CspParameters oggetto che espone una smart card e quindi inizializza un RSACryptoServiceProvider oggetto usando il provider di servizi crittografici. L'esempio di codice firma e verifica alcuni dati.
A causa di problemi di collisione con SHA1, è consigliabile sha256 o superiore.
using System;
using System.Runtime.Versioning;
using System.Security.Cryptography;
namespace SmartCardSign
{
[SupportedOSPlatform("windows")]
class SCSign
{
static void Main(string[] args)
{
// To identify the Smart Card CryptoGraphic Providers on your
// computer, use the Microsoft Registry Editor (Regedit.exe).
// The available Smart Card CryptoGraphic Providers are listed
// in HKEY_LOCAL_MACHINE\Software\Microsoft\Cryptography\Defaults\Provider.
// Create a new CspParameters object that identifies a
// Smart Card CryptoGraphic Provider.
// The 1st parameter comes from HKEY_LOCAL_MACHINE\Software\Microsoft\Cryptography\Defaults\Provider Types.
// The 2nd parameter comes from HKEY_LOCAL_MACHINE\Software\Microsoft\Cryptography\Defaults\Provider.
CspParameters csp = new CspParameters(1, "Schlumberger Cryptographic Service Provider");
csp.Flags = CspProviderFlags.UseDefaultKeyContainer;
// Initialize an RSACryptoServiceProvider object using
// the CspParameters object.
RSACryptoServiceProvider rsa = new RSACryptoServiceProvider(csp);
// Create some data to sign.
byte[] data = new byte[] { 0, 1, 2, 3, 4, 5, 6, 7 };
Console.WriteLine("Data : " + BitConverter.ToString(data));
// Sign the data using the Smart Card CryptoGraphic Provider.
byte[] sig = rsa.SignData(data, "SHA1");
Console.WriteLine("Signature : " + BitConverter.ToString(sig));
// Verify the data using the Smart Card CryptoGraphic Provider.
bool verified = rsa.VerifyData(data, "SHA1", sig);
Console.WriteLine("Verified : " + verified);
}
}
}
Imports System.Security.Cryptography
Module SCSign
Sub Main(ByVal args() As String)
' To identify the Smart Card CryptoGraphic Providers on your
' computer, use the Microsoft Registry Editor (Regedit.exe).
' The available Smart Card CryptoGraphic Providers are listed
' in HKEY_LOCAL_MACHINE\Software\Microsoft\Cryptography\Defaults\Provider.
' Create a new CspParameters object that identifies a
' Smart Card CryptoGraphic Provider.
' The 1st parameter comes from HKEY_LOCAL_MACHINE\Software\Microsoft\Cryptography\Defaults\Provider Types.
' The 2nd parameter comes from HKEY_LOCAL_MACHINE\Software\Microsoft\Cryptography\Defaults\Provider.
Dim csp As New CspParameters(1, "Schlumberger Cryptographic Service Provider")
csp.Flags = CspProviderFlags.UseDefaultKeyContainer
' Initialize an RSACryptoServiceProvider object using
' the CspParameters object.
Dim rsa As New RSACryptoServiceProvider(csp)
' Create some data to sign.
Dim data() As Byte = {0, 1, 2, 3, 4, 5, 6, 7}
Console.WriteLine("Data : " + BitConverter.ToString(data))
' Sign the data using the Smart Card CryptoGraphic Provider.
Dim sig As Byte() = rsa.SignData(data, "SHA1")
Console.WriteLine("Signature : " + BitConverter.ToString(sig))
' Verify the data using the Smart Card CryptoGraphic Provider.
Dim verified As Boolean = rsa.VerifyData(data, "SHA1", sig)
Console.WriteLine("Verified")
End Sub
End Module
Compilazione del codice
Includere gli System spazi dei nomi e System.Security.Cryptography .
È necessario che nel computer sia installato un lettore di smart card e driver.
È necessario inizializzare l'oggetto CspParameters utilizzando informazioni specifiche per il lettore di schede. Per altre informazioni, vedere la documentazione del lettore di schede.